본문 바로가기

파이썬35

[python 구름] 구름이의 여행 📜 접근 방법 인접 리스트로 그래프를 표현한다. BFS 방식을 사용한다. ❌ 실패 코드 ✅ 정답 코드 from collections import deque import sys input = sys.stdin.readline n, m, k = map(int, input().split()) graph = [[] for _ in range(n + 1)] for _ in range(m): u, v = map(int, input().split()) graph[u].append(v) graph[v].append(u) distance = [ 9**9 for _ in range(n + 1)] distance[1] = 0 que = deque() que.append(1) while que: cur = que.poplef.. 2023. 5. 23.
[python 구름] 구름 스퀘어 📜 접근 방법 회의실 배정과 같은 문제는 그리디 알고리즘으로 푼다 종료시간이 빠른 기준으로 우선순위를 잡는다. 시작 시간과 종료 시간을 받아 리스트에 넣는다. 우선순위는 첫번째로 종료시간이 빠르고, 두번째론 시작시간이 빠른 순으로 정렬한다. events를 돌면서 시작 시간 보다 종료 시간이 적을 경우 cnt + 1 해주고 종료 시간을 변경해준다. ❌ 실패 코드 ✅ 정답 코드 import sys input = sys.stdin.readline n = int(input()) events = [] for _ in range(n): s, e = map(int, input().split()) events.append([s, e]) events.sort(key = lambda x : (x[1], x[0])) cnt.. 2023. 5. 20.
[python 구름] 직사각형 만들기 📜 접근 방법 딕셔너리와 우선순위 큐를 사용 딕셔너리로 입력 받은 갯수를 저장하면서 힙에도 저장한다. pop하여 그 값의 갯수가 2개 이상인지 확인 후 pair에 저장한다. (우선순위 큐를 이용하여 제일 큰 수를 pop하기 때문에 정렬이 필요 없다.) pair에 순서대로 2개의 값을 곱해서 넓이를 만들고 res에 더한다. ❌ 실패 코드 만들수 있는 모든 직사각형의 최대 수를 구해야하는데 제일 큰 하나의 직사각형만 구함 from heapq import heappop, heappush import sys n = int(input()) nums = list(map(int, input().split())) dict_ = {} nums_dict = {} heap = [] res = 1 cnt = 0 for num.. 2023. 5. 19.
[python 구름] 거스름돈 📜 접근 방법 최소한의 동전을 주는 문제 가치가 높은 순으로 주어진 n을 뺀다. 뺄 수 없다면 그 다음 순서로 넘어간다. ✅ 정답 코드 n = int(input()) cnt = 0 while n > 0: if n >= 40: tmp = n // 40 n -= 40 * tmp elif n >= 20: tmp = n // 20 n -= 20 * tmp elif n >= 10: tmp = n // 10 n -= 10 * tmp elif n >= 5: tmp = n // 5 n -= 5 * tmp else: n -= 1 tmp = 1 cnt += tmp print(cnt) 이렇게 풀게 되면 계속해서 조건을 확인할 필요가 없는데 계속해서 확인을 하게 되는 문제가 있다. ✅ 다른 방식으로 줄인 코드 n = int(.. 2023. 5. 17.