분류 전체보기 185

[실버 III] 2630번. 색종이 만들기

문제 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 사용 언어 Python3 풀이 과정 재귀는 컴퓨터가 하는건데 내 머리로 짜려니 항상 머리가 아프다... 그래도 어찌저찌 풀어서 채점율 7~80%까지 쭉쭉 오르길래 맞았나!!! 했더니 마지막 순간에 틀렸습니다 어디서 틀린걸까 한참을 보다가 질문하기를 보고 어떤 현자님의 답변에서 힌트를 얻었다. def cutting(N, papers): pieces = [] globa..

[실버 III] 2606번. 바이러스

문제 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 사용 언어 Python3 풀이 과정 bfs 문제라지만 bfs로 못풀겠어서(이론에서 문제에 적용 어떻게 하는건즤!!!) 내 논리대로 풀었다가 틀렸다. 근데 웬만한건 정답이 떠서 웨!!! 틀린거야!!하고 스터디원들과도 상의했지만 맞을 듯 말듯 계속 틀렸다. 알고보니 문제는 내가 각 숫자에 방문처리를 해서(시작은 bfs였기 때문) [[1, 2], [2, 3], [3, 4], [5, 6], [7, 8],..

[골드 V] 14503번. 로봇 청소기

문제 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 사용 언어 Python3 풀이 과정 처음에 나는 d(현재 바라보고 있는 방향)에 따라서 다음 좌표값을 다르게 설정해주려 했는데, 그럼 왼쪽으로 회전할 때 뒤로 갈 때 등의 좌표값을 모두 조건문으로 나눠줘야 했다. if d == 0: # 북쪽의 왼쪽 next = (r, c-1) elif d == 1: # 동쪽의 왼쪽 next = (r-1, c) elif d == 2: # 남쪽의 왼쪽 next..

[실버 IV] 4881번. 자리수의 제곱

문제 https://www.acmicpc.net/problem/4881 4881번: 자리수의 제곱 89, 145, 42, 20, 4, 16, 37, 58 사이클 1 사이클 www.acmicpc.net 사용 언어 Python3 풀이 과정 이게 제일 효율적인 방법은 아니더라도 테스트 케이스는 다 맞길래 맞다고 생각했는데!!! 왜 때문에 틀렸습니다?! 반례를 찾으려고 열심히 아무 숫자나 넣어봤는데 내 머리로 계산한 답과 모두 일치했다... import sys cases = [] while True: case = list(sys.stdin.readline().strip().split()) if case == ['0', '0']: break cases.append(case) def sumEach(case): se..

[Level 2] 정렬. H-Index

문제 https://programmers.co.kr/learn/courses/30/lessons/42747?language=python3 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 사용 언어 Python3 풀이 과정 처음엔 정렬을 사용했지만 내 풀이대로 하면 굳이 정렬을 할 필요가 없어 뺐다. 그런데 딱 봐도 모든 경우의 수를 탐색해서 시간복잡도가 꽝이다. 알면서도 문제 그대로 구현하는 것 말고 내 머리로 풀 수가 없어 이렇게 풀었다. 그리고 제출 후 채점을 했더니..! ..

카테고리 없음 2022.03.02

[Level 2] 정렬. 가장 큰 수

문제 https://programmers.co.kr/learn/courses/30/lessons/42746?language=python3 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 사용 언어 Python3 풀이 과정 처음에 풀었던 답안은 다음과 같다. 이것도 처음에 if문으로 case를 엄청 나누다가 이게 아닌것 같아 다 엎고 질문하기에서 힌트를 얻어 작성한 코드인데... 아래와 같이 틀린 케이스가 절반이나 돼서 ㅋㅋㅋㅋㅋㅋ 한숨 쉬고 틀린..

[Level 2] 스택/큐. 다리를 지나는 트럭

문제 https://programmers.co.kr/learn/courses/30/lessons/42583?language=python3 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 사용 언어 Python3 풀이 과정 하아... 변수 설정부터 뭐뭐가 필요한지 고민하고 처음으로 메모장에 의사코드를 먼저 작성해봤다. 작성하다 보니 의사코드와 살짝씩 달라졌지만 갈수록 어려운 문제를 풀 것이니 처음 방향 설정에 도움이 되는 것 같다. 그리고 처음으로 브레이크 포인트를 추가해 디버깅을 해..

[Level 2] 스택/큐. 프린터

문제 https://programmers.co.kr/learn/courses/30/lessons/42587?language=python3 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 사용 언어 Python3 풀이 과정 원래 인덱스를 어떻게 저장해야 하나 백준 24061번 문제를 풀면서도 머리 아프게 고민했던 문제인데...풀다가 풀다가 모르겠길래 구글링해서 힌트만 얻고 내 코드에 넣어 풀 수 있었다.바로 for index, value in enumerate문을 이용하여 원래 인덱스와 값을 묶은 튜플을 원소로 하..

[Level 2] 스택/큐. 기능개발

문제 https://programmers.co.kr/learn/courses/30/lessons/42586?language=python3 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 사용 언어 Python3 풀이 과정 두 가지 방법으로 풀었다. 아래는 다른 사람 풀이를 보고 수정한 방식. def solution(progresses, speeds): answer = [] day = 0 count = 0 while len(progresses) > 0: if(progresses[0] + day*speed..

카테고리 없음 2022.02.24

[실버 IV] 24060번. 알고리즘 수업 - 병합 정렬 1

문제 https://www.acmicpc.net/problem/24060 24060번: 알고리즘 수업 - 병합 정렬 1 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109) www.acmicpc.net 사용 언어 Python3 풀이 과정 IDE에서는 정답이 출력되는 것을 확인했으나 채점이 느려서 불안한 순간 어김 없이 찾아온 시간 초과 import math import sys N, K = map(int, sys.stdin.readline().strip().split(' ')) A = list(map(int, sys.stdin.readline(..

[실버 V] 16171번. 나는 친구가 적다 (Small)

문제 https://www.acmicpc.net/problem/16171 16171번: 나는 친구가 적다 (Small) 첫 번째 줄에는 알파벳 소문자, 대문자, 숫자로 이루어진 문자열 S가 주어진다. (1 ≤ |S| ≤ 100) 두 번째 줄에는 성민이가 찾고자 하는 알파벳 소문자, 대문자로만 이루어진 키워드 문자열 K가 주 www.acmicpc.net 사용 언어 Python3 풀이 과정 처음엔 이렇게 풀었는데 틀렸습니다가 떠서 여러 예제를 집어넣어보여 빈 구멍을 찾았다.. import sys S = sys.stdin.readline().strip() K = sys.stdin.readline().strip() word_index = 0 for i in range(len(S)): if 48

[실버 IV] 1764번. 듣보잡

문제 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 사용 언어 Python3 풀이 과정 IDE에서는 예시 정답이 출력되는 것을 확인했으나 백준에서는 (역시) 시간 초과가 떴다. 그래도 이제는 코드를 짜면서 이게 시간 초과가 날 것 같은 코드라는 느낌이 왔달까..? 이걸발전한거라고 할 수 있나ㅎㅎ; import sys N, M = map(int, input().split()) names = [] result = [] count = 0 for ..

[실버 V] 1316번. 그룹 단어 체커

문제 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 사용 언어 Python3 풀이 과정 for문 안에서 if문을 로직에 따라 나눠 문제를 해결했다. 그런데 if문이 많아 뭔가 지저분해 보여 코드를 조금 수정했다. import sys def groupwordChecker(str): list = [] list.append(str[0]) if len(str) == 1: return 1 # 한 글자면 무조건 그룹단어 ..

[실버 IV] 1120번. 문자열

문제 https://www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net 사용 언어 Python3 풀이 과정 한번에 뜬 맞았습니다!! 처음에 로직을 짤 때 문자를 추가하는 함수까지 만들려고 했는데 생각해보니 문자를 추가한다면 비교 대상의 같은 위치와 같은 문자를 추가할 것이므로 실제로 문자를 추가할 필요는 없고 현재 A 덩어리가 B와 가장 많이 겹치는 부분의 차이를 찾으면 된다는 사실을 깨달았다. 이게 이 문제의 포인트였던 ..

[실버 V] 11723번. 집합

문제 https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 사용 언어 Python3 풀이 과정 set() 함수를 이용해 나름 쉽게 풀었다고 생각했는데 두둥...! 처음 보는 메모리 초과; import sys S = set() # 비어있는 공집합 result = [] # check만 출력 def program(input): global S operator = input[0] if len(input) == 2: number = int(input[1]) if(operator == 'add'..

Mongo DB 기초

[insert, insertOne, insertMany] insert(삽입) insertMany는 배열 형태로 다수의 데이터를 삽입한다. 몽고3.2버전 이후에는 insertOne(), insertMany() 명령을 사용을 권장하므로, insert() 명령 사용은 자제하는 것이 좋다. [update, updateOne, updateMany] update(수정) MongoDB에서 update명령을 사용하여 특정 필드의 값을 변경할 때는 $set 연산자를 사용하여야 한다. 만약 사용하지 않는다면 입력한 데이터 자체를 통째로 덮어버리게 되기 때문에 주의해야 한다. update 명령은 단일 도큐먼트도 수정 가능하지만 다수의 도큐먼트도 수정 가능하다. 다수의 도큐먼트 수정시에는 multi 옵션을 사용하여 수정할 수..

[브론즈 I] 2389번. 설탕 배달

문제 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 사용 언어 Python3 풀이 과정 내 머릿속의 로직대로 구현했는데 아무리 봐도 코드가 마음에 안들어... 어쨌든 한 번에 뜬 맞았습니다!! 제출 답안 N = int(input()) if N%5 == 0: # 5의 배수일 경우 바로 최소 봉지 print(N//5) else: for i in range(0, 10): # 3의 배수 하나씩 빼면서 5의 배수 여부 확인 if N-3*i < 0: # 음수면 조..