# 나의 풀이 n, k = map(int, input().split()) count = 0 while n > 1: if n % k != 0: # 17%4==1 n -= 1 # 16 count += 1 else: n = n//k count += 1 print(count) # 해설 n, k = map(int, input().split()) count = 0 while n >= k: # n을 k로 나눌 수 있을 때까지만 반복 while n % k != 0: n -= 1 count += 1 n //= k count += 1 while n > 1: # 다 나눴는데 n이 1보다 크다면 1씩 빼줌 n -= 1 count += 1 print(count)
# 나의 풀이 n, m = map(int, input().split()) k_min = [] for i in range(n): kard = map(int, input().split()) k_min.append(min(kard)) print(max(k_min)) n, m = map(int, input().split()) k_min = [0 for i in range(n)] for i in range(n): kard = map(int, input().split()) k_min[i] = min(kard) print(max(k_min)) # 해설 n, m = map(int, input().split()) result = 0 for i in range(n): kard = list(map(int, input().s..
# 나의 풀이 n, m, k = map(int, input().split()) num = sorted(map(int, input().split())) total, count = 0, 0 for i in range(m): # 더할 횟수(m)만큼 반복함 if count < k: # 연속으로 더할 수 있는 횟수(k)보다 작을 때만 더하는 조건식 total += num[-1] # 정렬했으므로 뒤에 있는 수가 가장 큼 count += 1 else: # count가 k를 넘겼을 때 total += num[-2] # 뒤에서 두 번째 수를 더하고 count = 0 # count는 0으로 초기화 print(total) # 해설 n, m, k = map(int, input().split()) data = sorted(ma..
그리디 알고리즘이란? 현재 상황에서 지금 당장 좋은 것만 고르는 방법이다. 따라서 최적의 해를 보장할 수 없을 때가 많다. 하지만 코딩테스트에서는 그리디로 얻은 해가 최적의 해가 되는 상황을 추론할 수 있어야 풀리도록 출제된다. 해결 아이디어 1. 최적의 해를 구하기 위해 가장 큰 단위부터 거슬러 준다. 2. 그 이유는 무엇일까? 큰 단위가 항상 작은 단위의 배수이기 때문이다. 3. 800원을 거슬러주어야 할 때 화폐 단위가 500, 400, 100이라면 500은 400의 배수가 아니기 때문에 최적의 해를 구할 수 없다. 예제 3-1. 거스름 돈 # 나의 풀이 money = int(input()) # 거스름돈 1260 count = 0 if money//500 > 0: count += (money//50..
[99] 성실한 개미 📖question 미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고, 먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자. 단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는 더이상 이동하지 않고 그 곳에 머무른다고 가정한다. 미로 상자의 테두리는 모두 벽으로 되어 있으며, 개미집은 반드시 (2, 2)에 존재하기 때문에 개미는 (2, 2)에서 출발한다. 입력 10*10 크기의 미로 상자의 구조와 먹이의 위치가 입력된다. 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 0..
[98] 설탕과자 뽑기 📖question 격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l), 막대를 놓는 방향(d:가로는 0, 세로는 1)과 막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때, 격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자. 입력 첫 줄에 격자판의 세로(h), 가로(w) 가 공백을 두고 입력되고, 두 번째 줄에 놓을 수 있는 막대의 개수(n) 세 번째 줄부터 각 막대의 길이(l), 방향(d), 좌표(x, y)가 입력된다. [입력값의 정의역] 1
[97] 바둑판에 십자 뒤집기 📖question 부모님을 기다리던 영일이는 검정/흰 색 바둑알을 바둑판에 꽉 채워 깔아 놓고 놀다가... "십(+)자 뒤집기를 해볼까?"하고 생각했다. 바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때, n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자. 입력 바둑알이 깔려 있는 상황이 19 * 19 크기의 정수값으로 입력된다. 십자 뒤집기 횟수(n)가 입력된다. 십자 뒤집기 좌표가 횟수(n) 만큼 입력된다. 단, n은 10이하의 자연수이다. 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ..
[96] 바둑판에 흰 돌 놓기 📖question 영일이는 아버지와 함께 두던 매우 큰 오목에 대해서 생각해 보다가 "바둑판에 돌을 올린 것을 프로그래밍 할 수 있을까?"하고 생각하였다. 바둑판(19 * 19)에 n개의 흰 돌을 놓는다고 할 때, n개의 흰 돌이 놓인 위치를 출력하는 프로그램을 작성해보자. 입력 바둑판에 올려 놓을 흰 돌의 개수(n)가 첫 줄에 입력된다. 둘째 줄 부터 n+1 번째 줄까지 흰 돌을 놓을 좌표(x, y)가 n줄 입력된다. n은 10이하의 자연수이고 x, y 좌표는 1 ~ 19 까지이며, 같은 좌표는 입력되지 않는다. 5 1 1 2 2 3 3 4 4 5 5 출력 흰 돌이 올려진 바둑판의 상황을 출력한다. 흰 돌이 있는 위치는 1, 없는 곳은 0으로 출력한다. 1 0 0 0 0 ..