본문 바로가기

코딩테스트43

[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.
[python 구름] 1차원 뿌요뿌요 📜 접근 방법 stack으로 접근하기 바로 앞 문자열과 현재 문자열과 비교하여 같을 경우 바로 앞 문자열과 현재 문자열과 비교하여 같을 때까지 반복한다. stack에 문자와 갯수를 +1 하여 넣어준다. 같지 않을 경우 m개 이상인지 확인 후 pop한다. 바로 앞 문자열과 현재 문자열과 비교하여 다를 경우 stack에 문자와 갯수를 1하여 넣어준다. ❌ 실패 코드 m개 이상이면 제거해야하는데 m개일 경우에만 제거를 했다. import sys input = sys.stdin.readline n, m = map(int, input().split()) user_input = input() i = 0 while i < len(user_input) - m: idx = user_input.find(user_input.. 2023. 5. 16.
[python 구름] 체크 카드 📜 접근 방법 deposit, pay, reservation을 기준으로 나눈다. deposit일 경우 balance에 값을 추가한다. pay일 경우 balance에 빼야할 값이 된다면 빼고 아니면 넘어간다. reservation일 경우 waiting에 넣는다. waiting에 값이 있을 경우 balance의 값과 비교하여 맨 앞에 있는 값부터 빼준다.(값이 안되면 반복문을 빠져나온다) ❌ 실패 코드 ✅ 정답 코드 import sys input = sys.stdin.readline balance, cnt = map(int, input().split()) waiting = [] for _ in range(cnt): cmd = list(input().split()) # deposit if cmd[0] == '.. 2023. 5. 15.