코딩 테스트/Level 2
-
디펜스 게임코딩 테스트/Level 2 2022. 12. 8. 19:51
https://school.programmers.co.kr/learn/courses/30/lessons/142085 힙큐를 쓰면 쉽게 풀 수 있다. push와 pop을 같이 해야할 경우 pushpop을 쓰는 것이 더 빠르다. 파이썬 내장 함수에 round가 있기 때문에 변수명으로 round는 사용하지 않는 것이 좋다. 파이썬의 힙큐는 최소힙이라 최대힙을 사용하기 위해 '-'를 붙여주었다. def solution(n, k, enemy): from heapq import heappushpop, heappush heap = [] total = round_ = 0 for each in enemy: total += each if total 0: k -= 1 total += heappushpop(heap, -eac..
-
점 찍기코딩 테스트/Level 2 2022. 12. 2. 20:56
https://school.programmers.co.kr/learn/courses/30/lessons/140107 def solution(k, d): answer, d_square = 0, d ** 2 for i in range(0, d + 1, k): answer += int((d_square - i ** 2) ** .5) // k + 1 return answer 테스트 1 〉통과 (0.01ms, 10.1MB) 테스트 2 〉통과 (0.02ms, 10.1MB) 테스트 3 〉통과 (1.58ms, 10.3MB) 테스트 4 〉통과 (0.82ms, 10.2MB) 테스트 5 〉통과 (2.39ms, 10.1MB) 테스트 6 〉통과 (2.09ms, 10.5MB) 테스트 7 〉통과 (1.03ms, 10.1MB) 테스..
-
귤 고르기코딩 테스트/Level 2 2022. 11. 25. 00:00
https://school.programmers.co.kr/learn/courses/30/lessons/138476 def solution(k, tangerine): from collections import Counter total, count = 0, Counter(tangerine) for index, each in enumerate(sorted(count.values(), reverse=True)): total += each if total >= k: return index + 1 return k 테스트 1 〉통과 (5.43ms, 13MB) 테스트 2 〉통과 (5.33ms, 13.3MB) 테스트 3 〉통과 (9.67ms, 13.2MB) 테스트 4 〉통과 (6.51ms, 13.1MB) 테스트 5 〉..
-
숫자 카드 나누기코딩 테스트/Level 2 2022. 11. 10. 22:40
https://school.programmers.co.kr/learn/courses/30/lessons/135807 gcd를 이용하면 통과. from math import gcd def solution(nums1, nums2): gcd1, gcd2 = nums1[0], nums2[0] for each1, each2 in zip(nums1[1:], nums2[1:]): gcd1, gcd2 = gcd(each1, gcd1), gcd(each2, gcd2) answer = [] for each1 in nums1: if each1 % gcd2 == 0: break else: answer.append(gcd2) for each2 in nums2: if each2 % gcd1 == 0: break else: ans..
-
야간 전술보행코딩 테스트/Level 2 2022. 11. 9. 22:44
https://school.programmers.co.kr/learn/courses/30/lessons/133501 문제에 오류가 있어 프로그래머스에 수정을 요청했다. 잘못된 보기를 고치랬더니 문제를 억지스럽게 수정했다. 경비병은 1초 후에 감시를 시작한다라... ㅎㅎㅎ solution = lambda distance, scopes, times: result[0] if (result := [index for scope, time in sorted(zip(scopes, times)) for index in range(min(scope), max(scope) + 1) if (index - 1) % sum(time) < time[0]]) else distance 약간 억지스러운 부분도 있지만 한줄로 코딩하기 ..
-
우박수열 정적분코딩 테스트/Level 2 2022. 11. 9. 21:04
https://school.programmers.co.kr/learn/courses/30/lessons/134239 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(k, ranges): points = [k] while k != 1: if k % 2 == 0: k //= 2 else: k = 3 * k + 1 points.append(k) return [-1 if a > (c := len(points) + b - 1) else sum((points[i] + points[i + 1]) / 2 for i in range(a, c)) fo..
-
택배상자코딩 테스트/Level 2 2022. 11. 9. 18:27
https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 간단하게 스택으로 처리하기 위해 order의 방향을 바꿈... 변화를 체크하기 위해 change 변수를 사용.. 문제를 그대로 코드로... def solution(order): belt = list(range(len(order), 0, -1)) order.reverse() sub_belt = [] truck = [] change = True while change: change = False i..
-
혼자 놀기의 달인코딩 테스트/Level 2 2022. 11. 8. 23:15
https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 그대로 코드화 하면 답을 구할 수 있는 문제.. 박스를 딕셔너리로 구현. def solution(cards): boxes = {index + 1: card for index, card in enumerate(cards)} groups = [] while boxes: visited = set() pos = list(boxes.keys())[0] while pos not in visited:..