본문 바로가기

백준 문제 풀이 및 피드백

(33)
2023.01.18 토마토 백준[파이썬] https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net import sys from collections import deque input = sys.stdin.readline def main(): def bfs(discovered): nonlocal graph max_time = 0 while discovered: # 가야하는 곳이 없으면 종료 #print(discovered) pos = discovered.popleft() # bf..
2023.01.18 좌표압축 백전 [파이썬] https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net import sys input = sys.stdin.readline n = int(input().strip()) lists = list(map(int,input().split())) sort_list = sorted(list(set(lists))) # 중복된걸 제외하고 정렬한다. dicts = {} for i ,val in enumerate(sor..
2023.01.18 동전 0 [파이썬] https://www.acmicpc.net/problem/11047 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 import sys input = sys.stdin.readline n , goal = map(int, input().split()) count = 0 money_list = [int(input().strip()) for _ in range(n)] money_list.sort(reverse=True) for i in money_lis..
2023.01.18 나는야 포켓몬 마스터 이다솜[파이썬] https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net import sys from collections import defaultdict input = sys.stdin.readline n,m = map(int,input().split()) ency = defaultdict(str) for i in range(1,n+1): names = input().strip() ency[names] = str(i) ency[str(i..
2023.01.18 피보나치 함수 백준[파이썬] https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net import sys input = sys.stdin.readline cases = int(input().strip()) numlist = [int(input().strip()) for _ in range(cases)] lists = [0,1] + [0]*(cases-1) for N in numlist: if N == 0: print(1, 0) continue lists = [0,1] + [0]*(N-1) for i in range(2, N+1): lists[i] = lists[i-1] + li..
2023.01.17 최대 힙 백준 [파이썬] https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys from heapq import heappush as hh from heapq import heappop as hp input = sys.stdin.readline heap = [] N = int(input().strip()) for i in range(N): ip = int(input().strip()) if ip == 0: if heap: print(..
2023.01.17 팩토리얼 0의 개수[파이썬] https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net import sys N = int(sys.stdin.readline()) def zero_count(fac, counters = 0,sq = 2): counters += len(fac) if len(fac) < 5: return counters fac = list(filter(lambda x: x%(5**sq) == 0, fac)) return zero_count(fac,counters,sq +1) print(zero_count(list(range(0,N+1,5))[1:])) 쉽게만..
2023.01.17 1로 만들기 백준 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 처음에는 2의 제곱수가 아니면 3으로 나누는게 더 빠를 거라고 생각해서 코드를 짰지만 3으로 나누는 것보다 2 로 나누는게 더 빠른 반례를 찾아서 그 부분을 폐기하고 처음부터 계산하는 코드를 짰다. import sys def main(): N = int(sys.stdin.readline()) re_num = [ 0 for _ in range(N+1)] if N == 1: print(0) return for i in range(2,N+1): re_num[i] = re_num[i-1] + 1 if i % 2 == ..