목록백준 (73)
하루일문
문제 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 코드 N, K = map(int, input().split()) coin = [int(input()) for _ in range(N)] cnt = 0 for i in range(N - 1, -1, -1): if K // coin[i] > 0: cnt += K // coin[i] K = K % coin[i] if K == 0: break print(cnt) 해설 가장 큰 수부터 하나하나 넣는 방식..
문제 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline from collections import deque def BFS(visited, S, G): global U, D queue = deque([S]) visited[S] = 0 while queue: now = queue.popleft() if now == G: return visited[now] for i in [U, -D]: next = n..
문제 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 코드 def hanoi(n, start, goal, side): # 1일 경우(가장 작다) 골로 보내줘 if n == 1: return print(start, goal) # 아니라면 n-1하면주고 goal, side 위치를 바꿔줘 # 짝 = goal, side 위치 변경 hanoi(n-1, start, side, goal) # 재귀하고 나오면(작은 수가 빠졌다.) 움직일 수 있다 # 1일 경우와 다른 축에 넣어줘야함 print(start, goal) hano..
문제 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 코드 dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline def DFS(graph, visited, i, j): visited[i][j] = 1 for _ in range(4): nx = i + dx[_] ny = j + dy[_] if 0
문제 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 코드 BFS import sys from collections import deque input = sys.stdin.readline dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] def BFS(graph, visitied, x, y): global cnt queue = deque([(x, y)]) cnt += 1 visitied[x][y] = cnt while queue: n, m = queu..
문제 1076번: 저항 첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다. www.acmicpc.net 코드 color_dic = { "black":(0, 1), "brown":(1, 10), "red":(2, 100), "orange":(3, 1000), "yellow":(4, 10000), "green":(5, 100000), "blue":(6, 1000000), "violet":(7, 10000000), "grey":(8, 100000000), "white":(9, 1000000000), } value = "" for _ in range(2): color = input() c = color_dic[color][0] value..
문제 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 www.acmicpc.net 코드 num = int(input()) word = list(input()) for _ in range(num-1): word_2 = input() for n in range(len(word)): if word[n] == word_2[n]: continue else: word[n] = "?" print(*word, sep = "") 해설 word를 리스트로 받고 이후 입력 문자와 하나하나 비교하면서 틀리다면 word의 해당 인덱스를 "?"로 바꿔줬다.
문제 14248번: 점프 점프 첫 번째 줄에는 돌다리의 돌 개수 n이 주어진다.(1≤n≤100,000) 돌의 번호는 왼쪽부터 1번에서 n번이다. 다음 줄에는 그 위치에서 점프할 수 있는 거리 Ai가 주어진다.(1≤Ai≤100,000) 다음 줄에는 출 www.acmicpc.net 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**6) def DFS(start): global cnt visited[start] = True cnt += 1 for _ in range(2): if (0