본문 바로가기

코딩테스트/Python43

[python 백준 2109] 순회강연 📜 접근 방법 우선순위 큐 사용 날짜를 기준으로 오름차순 정렬을 한다. 최소 힙을 이용하여 금액을 기준으로 넣어준다. 만약 방금 넣어준 날짜가 heap의 길이를 비교한다. (day가 기한이기에 그 기한보다 heap에 있는 길이가 크면 기간안에 할수없음!) 날짜가 heap의 길이보다 크면 pop (금액이 작은 값을 pop) heap에 들어있는 금액을 전부 더한다. ❌ 실패 코드 import sys n = int(sys.stdin.readline()) lecture = [list(map(int, sys.stdin.readline().split())) for i in range(n)] lecture.sort(key=lambda x: x[1]) deadline = lecture[n - 1][1] i = n - .. 2023. 4. 9.
[python 백준 2696] 중앙값 구하기 📜 접근 방법 ❌ 실패 코드 ✅ 정답 코드 import sys import heapq import math t = int(sys.stdin.readline()) for i in range(t): arr = [] n = int(sys.stdin.readline()) if n > 10: k = math.ceil(n / 10) for i in range(k): arr += list(map(int, sys.stdin.readline().split())) else: arr = list(map(int, sys.stdin.readline().split())) m = arr[0] big = 0 small = 0 big_heap = [] small_heap = [] res = [] for j in range(n): if.. 2023. 4. 9.
[python 백준 7662] 이중 우선순위 큐 📜 접근 방법 I n : n 삽입 D -1 : 최소값 삭제 D 1 : 최댓값 삭제 최댓값과 최솟값을 넣는 배열을 만들고 삽입 시 두 배열에 넣어주는데 인덱스와 함께 넣어준다. 또한 check_num으로 숫자를 삭제했는지 확인하는 배열로 삽입시에는 True로 변경하고 삭제시엔 False로 변경한다. -> 이렇게 하는 이유는 최솟값과 최댓값을 삭제할 시에 어떤 값을 삭제했는지 서로 모르기 때문이다. ❌ 실패 코드 삭제시에 양쪽 우선순위 큐에서 동시에 같은 값을 삭제를 하려고 해서 풀지 못했다. ✅ 정답 코드 import sys import heapq t = int(sys.stdin.readline()) for i in range(t): max_heap = [] min_heap = [] n = int(sys... 2023. 4. 8.
[python] 혼자서 하는 틱택토 📜 접근 방법 O가 이길경우 -> O의 갯수가 1개 많아야함 X가 이길 경우 -> X의 갯수와 O의 갯수가 같아야함 칸을 다 채우고 비길 경우 -> O의 갯수가 1개 많아야함 경기가 진행중일 경우 -> X의 갯수와 O의 갯수가 같거나 O의 갯수가 1개 많아야함 ❌ 실패 코드 대각선 부분 코드를 잘못 짰었음 ✅ 정답 코드 def solution(board): o_count = 0 x_count = 0 for n in board: o_count += n.count("O") x_count += n.count("X") if (o_count - x_count != 0) and (o_count - x_count != 1): return 0 # 가로 x_win = 0 o_win = 0 for n in board: i.. 2023. 4. 7.