본문 바로가기

코딩 테스트30

백준 13904번 : 과제 (Python) 출처 : https://www.acmicpc.net/problem/13904 n = int(input()) hw = [] max_d = 0 for _ in range(n) : d, w = map(int, input().split()) hw.append((w, d)) max_d = max(max_d, d) hw.sort() arr = [0] * (max_d + 1) answer = 0 while hw : w, d = hw.pop() for i in range(d, 0, -1) : if arr[i] == 0 : arr[i] = w answer += w break print(answer) 두 가지 풀이가 있다. 먼저 남은 일수와 점수를 입력 받아 hw에 저장하고, 점수가 낮은 순으로 정렬한다. 또한 입력 과정.. 2023. 2. 26.
프로그래머스 롤케이크 자르기 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/132265 from collections import Counter def solution(topping) : answer = 0 top_1 = Counter(topping) top_2 = set() for i in range(len(topping)) : top = topping[i] top_2.add(top) top_1[top] -= 1 if top_1[top] == 0 : # 딕셔너리에서 특정 키 제거. del dict[key] 도 가능 top_1.pop(top) if len(top_1) == len(top_2) : answer += 1 return answer 모든 인덱스마다 앞뒤로 쪼.. 2023. 1. 25.
백준 10971번 : 외판원 순회 2 (Python) 출처 : https://www.acmicpc.net/problem/10971 n = int(input()) graph = [list(map(int, input().split())) for _ in range(n)] min_cost = int(1e9) visited = [False] * n # now : 현재 방문 중인 도시 # now_cost : 지금 도시까지 비용 # visits_cnt : 지금까지 방문한 도시 수 def back_track(now, now_cost, visits_cnt) : global min_cost # 지금까지 비용이 최소 비용보다 크면 더 이상 탐색 X if now_cost >= min_cost : return # 모든 도시 다 방문하면 처음 시작한 도시로 돌아가야 함 if vi.. 2023. 1. 25.
백준 2206번 : 벽 부수고 이동하기 (Python) 출처 : https://www.acmicpc.net/problem/2206 from collections import deque # n : 행 개수 , m :열 개수 n, m = map(int, input().split()) graph = [list(input()) for _ in range(n)] # visited[0][x][y] : 벽을 안 부수고 (x, y)까지 최단거리 # visited[1][x][y] : 벽을 1회 부수고 (x, y)까지 최단거리 visited = [[[0] * m for _ in range(n)] for _ in range(2)] def bfs(start_x, start_y) : visited[0][start_x][start_y] = 1 move =[(0, 1), (0, -1).. 2023. 1. 19.