그리디13 [프로그래머스] 고득점Kit (6) - 그리디(1) (파이썬) 1. 체육복 (Lv. 1) # 체육복 def solution(n, lost, reserve): lost = set(lost) reserve = set(reserve) answer = 0 for x in (lost-reserve): if x-1 in (reserve-lost): reserve.remove(x-1) continue elif x+1 in (reserve-lost): reserve.remove(x+1) continue answer += 1 return n - answer 집합의 성질을 이용했다. (차집합 이용) 체육복을 잃어버린 인원 중, 여벌 체육복이 없는 인원들(lost - reserve)을 for문으로 돌면서 앞이나 뒤의 사람이 여벌 체육복을 가지고 왔으면서 체육복을 잃어버리지 않은 집합(.. 2022. 3. 5. [백준] 10775번 - 공항 (파이썬) # 공항 def find_parent(x): if x != parent[x]: parent[x] = find_parent(parent[x]) return parent[x] def union_parent(x, y): x = find_parent(x) y = find_parent(y) if x < y: parent[y] = x else: parent[x] = y G = int(input()) P = int(input()) parent = [i for i in range(G+1)] plane = [] for _ in range(P): plane.append(int(input())) count = 0 for p in plane: x = find_parent(p) if x == 0: break union_pare.. 2022. 3. 1. [백준] 3109번 - 빵집 (파이썬) # 빵집 import sys input = sys.stdin.readline N, M = map(int, input().split()) arr = [] for _ in range(N): arr.append(list(input().strip())) dx = [-1, 0, 1] dy = [1, 1, 1] def pipe(x, y): global result arr[x][y] = 'o' if y == M-1: result += 1 return True for k in range(3): nx = x + dx[k] ny = y + dy[k] if 0 2022. 2. 18. [백준] 1700번 - 멀티탭 스케줄링 (파이썬) # 멀티탭 스케줄링 from asyncore import close_all import sys input = sys.stdin.readline N, K = map(int, input().split()) use = list(map(int, input().split())) plugs = [] result = 0 for i in range(K): # 이미 있다면 if use[i] in plugs: continue # 빈공간이 있다면 if len(plugs) != N: plugs.append(use[i]) continue # 가장 멀리 있는 플러그의 인덱스 far_one = 0 temp = 0 # 현재 꽂혀있는 플러그들 확인 for plug in plugs: # 앞으로 사용할 플러그에 없으면 if plug no.. 2022. 2. 12. [백준] 2437번 - 저울 (파이썬) # 저울 import sys input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) arr.sort() result = 0 sum = 0 for i in range(N): if sum+1 >= arr[i]: sum += arr[i] else: result = sum+1 break if result == 0: result = sum+1 print(result) 그리디 1. 저울의 무게를 담은 리스트를 정렬해준다 2. 현재까지의 무게의 합 + 1보다 다음에 리스트에 넣어줄 값이 더 크면 중간에 공백이 나오는 것을 이용 - (sum+1) >= (다음무게) 이면, (현재까지의 무게의합) += (다음무게) - 더 크면 공백.. 2022. 1. 31. [백준] 1339번 - 단어 수학 (파이썬) # 단어 수학 from collections import deque N = int(input()) arr = [] for _ in range(N): arr.append(deque(list(input().strip()))) alpha = {} for i in range(N): j = 0 while True: if len(arr[i]) == 0: break if arr[i][j] in alpha: alpha[arr[i].popleft()] += 10**(len(arr[i])) else: alpha[arr[i].popleft()] = 10**(len(arr[i])-1) list = [] for i in alpha.values(): list.append(i) list.sort(reverse=True) resul.. 2022. 1. 27. 이전 1 2 다음