본문 바로가기
반응형

전체 글252

[백준][Python] 2812번 크게 만들기 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 코드 n,k = map(int, input().split()) num = int(input()) n_list = list(map(int,str(num))) # 숫자 분리할 때 먼저 문자열로 바꾼 후 분리 stack = [] cnt = 0 stack.append(n_list[0]) for i in range(1,n): while stack and n_list[i] > stack[-1]: if cnt == k: break stack.pop() cnt+=1 stack.append(n_list[i]) while cnt != k: stack.pop.. 2022. 5. 2.
[백준][Python] 2141번 우체국 2141번: 우체국 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 X[1], A[1], X[2], A[2], …, X[N], A[N]이 주어진다. 범위는 |X[i]| ≤ 1,000,000,000, 0 ≤ A[i] ≤ 1,000,000,000 이며 모든 입력은 정수이다. www.acmicpc.net 코드 import sys import math n = int(input()) n_list = [] for _ in range(n): a,b = map(int,sys.stdin.readline().split()) n_list.append([a,b]) n_list.sort() cnt = 0 total = 0 for i in range(n): total += n_list[i][1] fo.. 2022. 4. 29.
[백준][Python] 1092번 배 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 코드 n = int(input()) crane = list(map(int,input().split())) m = int(input()) box = list(map(int,input().split())) crane.sort(reverse=True) box.sort(reverse=True) cnt = 0 if crane[0] 0: cnt+=1 for i in range(n): .. 2022. 4. 28.
[백준][Python] 19598번 최소 회의실 개수 19598번: 최소 회의실 개수 2개 회의실로 3개 회의를 모두 진행할 수 있다. 예를 들어, 첫번째 회의실에서 첫번째 회의를 진행하고 두번째 회의실에서 두번째 회의와 세번째 회의를 진행하면 된다. 1개 회의실로 3개 회의 www.acmicpc.net 코드 import sys import heapq n = int(input()) time = [] for _ in range(n): s,e = map(int,sys.stdin.readline().split()) time.append([s,e]) time.sort() heap = [] cnt = 1 heapq.heappush(heap, time[0][1]) for i in range(1,n): if time[i][0] >= heap[0]: heapq.heapp.. 2022. 4. 27.
[백준][Python] 11509 풍선 맞추기 11509번: 풍선 맞추기 첫 번째 예제 에서 [5,4,3] 을 터트리고 [2,1]을 터트리면 모든 풍선을 터트릴 수 있으므로 최소한 2개의 화살을 필요로 한다. www.acmicpc.net 코드 n = int(input()) n_list = list(map(int,input().split())) arrow = [0] * 1000001 cnt = 0 for i in range(n): if arrow[n_list[i]] == 0: cnt += 1 arrow[n_list[i]-1] += 1 else: arrow[n_list[i]] -= 1 arrow[n_list[i]-1] += 1 print(cnt) 설명 발사된 화살의 위치를 배열을 이용하여 표시해주었다. 만약 주어진 풍선의 높이에 화살이 존재하면 배열에서.. 2022. 4. 13.
[백준][Python] 11000번 강의실 배정 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 코드 import sys time = [] n = int(input()) visit = [False] * n ans = 0 for _ in range(n): s, e = list(map(int,sys.stdin.readline().split())) time.append([s,e]) time.sort() for i in range(n): if visit[i] == False: visit[i] = True ans += 1 end = time[i][1] # 수업 끝나는 시간 for j in range(i,n): if.. 2022. 4. 12.
[백준][Python] 21758번 꿀 따기 21758번: 꿀 따기 첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다. www.acmicpc.net 코드 from copy import deepcopy n = int(input()) h = list(map(int,input().split())) sum = deepcopy(h) ans = 0 for i in range(1,n): sum[i] += sum[i-1] #꿀통이 왼쪽 끝 for i in range(1,n-1): ans = max(ans, sum[-2] + sum[i-1] - h[i]) #꿀통이 오른쪽 끝 for i in range(1,n-1): ans = max(ans, sum[-1]-h[0] + sum[-1]-sum[i] - h[i]) #벌들이 양쪽 끝 for i in range(1,n-1):.. 2022. 4. 11.
[백준][Python] 21314번 민겸 수 21314번: 민겸 수 민겸 수 하나가 주어진다. 민겸 수는 대문자 M과 K로만 이루어진 문자열이며, 길이는 3,000을 넘지 않는다. www.acmicpc.net 코드 def get_min(): cnt = 0 ans = [] for i in inp: if i == 'M': cnt += 1 elif i == 'K': if cnt != 0: ans.append(10**(cnt-1)) cnt = 0 ans.append(5) if cnt != 0: ans.append(10**(cnt-1)) return ans def get_max(): cnt = 0 ans = [] for i in inp: if i == 'M': cnt += 1 elif i == 'K': if cnt==0: ans.append(5) else:.. 2022. 4. 8.
[백준][Python] 16953번 A → B 16953번: A → B 첫째 줄에 A, B (1 ≤ A b: err = 1 break if b % 2 == 0: b //=2 cnt+=1 elif b % 10 == 1: b //= 10 cnt+=1 else: err = 1 break if err == 1: print(-1) else: print(cnt+1) 설명 목표 수부터 거꾸로 거슬러 올라가서 만약 목표 수가 짝수이면 2로 나눠준 뒤 cnt를 증가시키고, 1의 자리수가 1이면 10으로 나눠주고 cnt를 증가시켰다. 만약 이 둘 중에 어디에도 속하지 않으면 이것은 그 수.. 2022. 4. 7.
반응형