코딩 테스트/Level 2
-
유사 칸토어 문자열코딩 테스트/Level 2 2023. 1. 1. 12:00
https://school.programmers.co.kr/learn/courses/30/lessons/148652 이렇게는 제한 시간 내에 풀 수 없다 def solution(n, l, r): prev = [1] for _ in range(n): temp = [] for each in prev: if each == 1: temp.extend((1, 1, 0, 1, 1)) else: temp.extend((0, 0, 0, 0, 0)) prev = temp return sum(int(each) for each in prev[l - 1: r]) 재귀를 이용하여 풀 수 있다. def solution(n, l, r): def solve(num): if num 2: return (quotient - 1) * (4..
-
마법의 엘리베이터코딩 테스트/Level 2 2023. 1. 1. 11:33
https://school.programmers.co.kr/learn/courses/30/lessons/148653 def solution(storey): def solve(num, total): if num == 0: return total num_log = int(log10(num)) # 자리수 - 1 first = num // 10 ** num_log # 제일 앞 숫자 if first 5: return solve(10 ** (num_log + 1) - num, total + 1) else: if num_log == 0: return first + total num2 ..
-
테이블 해시 함수코딩 테스트/Level 2 2022. 12. 24. 13:04
https://school.programmers.co.kr/learn/courses/30/lessons/147354 from functools import reduce solution = lambda data, col, row_begin, row_end: reduce(lambda x, y: x ^ y, (sum(each % (i + 1) for each in sorted(data, key=lambda x: (x[col - 1], -x[0]))[i]) for i in range(row_begin - 1, row_end))) def solution(data, col, row_begin, row_end): data.sort(key=lambda x: (x[col - 1], -x[0])) answer = None..
-
디펜스 게임코딩 테스트/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 약간 억지스러운 부분도 있지만 한줄로 코딩하기 ..