코딩 테스트/Baekjoon
백준 온라인 져지 문제 중 풀이해본 문제들의 해결 과정과 코드를 공유하는 내용을 담습니다.
-
문제 보기 : 2108번: 통계학 문제정답률 : 26%작성 코드import sysinput = sys.stdin.readlineT = int(input())nums1 = [] ; nums2 = {}ns = 0for i in range(T): n = int(input()) ns += n nums1.append(n) if n not in nums2: nums2[n]=1 else: nums2[n]+=1print(round(ns/T))nums1.sort()if T%2==1: i = (T-1)//2 print(nums1[i])else: i = T//2 print((nums1[i]+nums1[i-1])/2)num = sorted(nums2...
S3 2108. 통계학문제 보기 : 2108번: 통계학 문제정답률 : 26%작성 코드import sysinput = sys.stdin.readlineT = int(input())nums1 = [] ; nums2 = {}ns = 0for i in range(T): n = int(input()) ns += n nums1.append(n) if n not in nums2: nums2[n]=1 else: nums2[n]+=1print(round(ns/T))nums1.sort()if T%2==1: i = (T-1)//2 print(nums1[i])else: i = T//2 print((nums1[i]+nums1[i-1])/2)num = sorted(nums2...
2024.11.11 -
문제 보기 : 14501번: 퇴사 문제정답률 : 50%작성 코드 & 풀이 과정 코멘트# import sys# input = sys.stdin.readlinen = int(input())t = [0] ; p = [0]for _ in range(n): t1, p1 = map(int,input().split()) t.append(t1) ; p.append(p1)cost = set()cost.add((1+t[1],p[1]))maxx = 0for i in range(2,n+1): possible = [] for dd,pp in cost: #4,10 if i >= dd and i+t[i] = 4 possible.append((dd+t[i],pp+p[i])) ..
S3 14501. 퇴사문제 보기 : 14501번: 퇴사 문제정답률 : 50%작성 코드 & 풀이 과정 코멘트# import sys# input = sys.stdin.readlinen = int(input())t = [0] ; p = [0]for _ in range(n): t1, p1 = map(int,input().split()) t.append(t1) ; p.append(p1)cost = set()cost.add((1+t[1],p[1]))maxx = 0for i in range(2,n+1): possible = [] for dd,pp in cost: #4,10 if i >= dd and i+t[i] = 4 possible.append((dd+t[i],pp+p[i])) ..
2024.11.10 -
문제 보기 : 14502번: 연구소 문제정답률 : 55%작성 코드# 벽 세울 수 있는 공간 조합def combinations(n,new,c): answer = [] if len(new) == n: return [new] for i in range(c,len(possible)): answer.extend(combinations(n,new+[possible[i]],i+1)) return answerfrom collections import deque#바이러스 퍼지기direction = [(-1,0),(0,-1),(0,1),(1,0)]def spread(graph,start): dd = deque([start]) while dd: x, y..
G4 14502. 연구소문제 보기 : 14502번: 연구소 문제정답률 : 55%작성 코드# 벽 세울 수 있는 공간 조합def combinations(n,new,c): answer = [] if len(new) == n: return [new] for i in range(c,len(possible)): answer.extend(combinations(n,new+[possible[i]],i+1)) return answerfrom collections import deque#바이러스 퍼지기direction = [(-1,0),(0,-1),(0,1),(1,0)]def spread(graph,start): dd = deque([start]) while dd: x, y..
2024.11.09 -
문제 보기 : 1927번: 최소 힙 문제정답률 : 49%작성 코드import heapq, sysinput = sys.stdin.readlineT = int(input())heap = []for _ in range(T): a = int(input()) if a > 0: heapq.heappush(heap,a) elif a == 0 and heap: minv = heapq.heappop(heap) print(minv) elif a == 0 and not heap: print(0)풀이heapq와 sys를 충분히 다룰 수 있다면 쉬운 문제였다.T로 큰 수를 받을 수 있기 때문에 sys 라이브러리로 값들을 빠르게 읽을 수 있도록 처리했고, ..
S2 1927. 최소 힙문제 보기 : 1927번: 최소 힙 문제정답률 : 49%작성 코드import heapq, sysinput = sys.stdin.readlineT = int(input())heap = []for _ in range(T): a = int(input()) if a > 0: heapq.heappush(heap,a) elif a == 0 and heap: minv = heapq.heappop(heap) print(minv) elif a == 0 and not heap: print(0)풀이heapq와 sys를 충분히 다룰 수 있다면 쉬운 문제였다.T로 큰 수를 받을 수 있기 때문에 sys 라이브러리로 값들을 빠르게 읽을 수 있도록 처리했고, ..
2024.11.08 -
문제 보기 : 1966번: 프린터 큐 문제정답률 : 58%작성 코드from collections import dequedef importance(arr,arr1,n): k = 0 while arr: idx, imp = arr.popleft() left = [i for i,j in arr if j>imp] if left: arr.append((idx, imp)) else: k += 1 # 프린트 if idx == n and arr1[n] == imp: return k return kT = int(input())for _ in range(T): n,..
S3 1966. 프린터 큐문제 보기 : 1966번: 프린터 큐 문제정답률 : 58%작성 코드from collections import dequedef importance(arr,arr1,n): k = 0 while arr: idx, imp = arr.popleft() left = [i for i,j in arr if j>imp] if left: arr.append((idx, imp)) else: k += 1 # 프린트 if idx == n and arr1[n] == imp: return k return kT = int(input())for _ in range(T): n,..
2024.11.07 -
문제 보기 : 15652번: N과 M (4) 문제정답률 : 78% 작성 코드def product(n,new,c): global arr answer = [] if len(new) == n: return [new] for i in range(c,len(arr)): answer.extend(product(n,new+[arr[i]],i)) return answern,m = map(int,input().split())arr = list(i for i in range(1,n+1))visited = [False]*(n)for p in product(m,[],0): print(*p, sep=' ')풀이product는 permutations에서 중복을 허용한건데..
S3 15652. N과 M (4)문제 보기 : 15652번: N과 M (4) 문제정답률 : 78% 작성 코드def product(n,new,c): global arr answer = [] if len(new) == n: return [new] for i in range(c,len(arr)): answer.extend(product(n,new+[arr[i]],i)) return answern,m = map(int,input().split())arr = list(i for i in range(1,n+1))visited = [False]*(n)for p in product(m,[],0): print(*p, sep=' ')풀이product는 permutations에서 중복을 허용한건데..
2024.11.07 -
문제 보기 : 11727번: 2×n 타일링 2 문제정답률 : 58%작성 코드arr = [1]*(1001)for i in range(1,1001): if i%2==1: arr[i]=arr[i-1]*2 + 1 else: arr[i]=arr[i-1]*2 - 1 arr[i] %= 10007T = int(input())print(arr[T-1])풀이1 : 1, 2: 3, 3: 5. 4: 11, 5: 21, 6: 21, 7: 43...의 순서로 증가하는 규칙을 가진다. 1*2와 2*1만 있을 때는 피보나치 수열로 해결하면 됐는데 [1, 3, 5, 11, 21, 43,.. ] 이 수열은 규칙을 찾기가 좀 어려웠다.그래서 제곱에 차수 빼는 방법, 이전 값 모두 더해서 다음 값..
S3 11727. 2×n 타일링 2문제 보기 : 11727번: 2×n 타일링 2 문제정답률 : 58%작성 코드arr = [1]*(1001)for i in range(1,1001): if i%2==1: arr[i]=arr[i-1]*2 + 1 else: arr[i]=arr[i-1]*2 - 1 arr[i] %= 10007T = int(input())print(arr[T-1])풀이1 : 1, 2: 3, 3: 5. 4: 11, 5: 21, 6: 21, 7: 43...의 순서로 증가하는 규칙을 가진다. 1*2와 2*1만 있을 때는 피보나치 수열로 해결하면 됐는데 [1, 3, 5, 11, 21, 43,.. ] 이 수열은 규칙을 찾기가 좀 어려웠다.그래서 제곱에 차수 빼는 방법, 이전 값 모두 더해서 다음 값..
2024.11.07 -
문제 보기 : 11659번: 구간 합 구하기 4 문제정답률 : 38%작성 코드import sysinput = sys.stdin.readlinen,m = map(int,input().split())ls = list(map(int,input().split()))lst = [0]*(n+1)for i in range(1,n+1): lst[i] = lst[i-1]+ls[i-1]for _ in range(m): a,b = map(int,input().split()) print(lst[b]-lst[a-1])풀이ls가 5,4,3,2,1이라면 lst를 0,5,9,12,14,15로 만들어두고 (누적 합 알고리즘) lst의 인덱스를 활용해서 답을 구한다!
S3 11659. 구간 합 구하기 4문제 보기 : 11659번: 구간 합 구하기 4 문제정답률 : 38%작성 코드import sysinput = sys.stdin.readlinen,m = map(int,input().split())ls = list(map(int,input().split()))lst = [0]*(n+1)for i in range(1,n+1): lst[i] = lst[i-1]+ls[i-1]for _ in range(m): a,b = map(int,input().split()) print(lst[b]-lst[a-1])풀이ls가 5,4,3,2,1이라면 lst를 0,5,9,12,14,15로 만들어두고 (누적 합 알고리즘) lst의 인덱스를 활용해서 답을 구한다!
2024.11.05