코딩 테스트/Level 2
-
코딩테스트 / 미로 탈출코딩 테스트/Level 2 2023. 2. 18. 12:15
https://school.programmers.co.kr/learn/courses/30/lessons/159993 너비우선탐색(BFS) 문제입니다. 너비우선탐색은 큐(선입 선출)로 풀 수 있습니다. 파이썬 def find_s_l_e(maps): point_s, point_l, point_e = (0, 0), (0, 0), (0, 0) for r, row in enumerate(maps): for c, col in enumerate(row): if col == 'S': point_s = (r, c) elif col == 'L': point_l = (r, c) elif col == 'E': point_e = (r, c) return point_s, point_l, point_e def bfs(maps, s..
-
호텔 대실코딩 테스트/Level 2 2023. 2. 2. 22:32
https://school.programmers.co.kr/learn/courses/30/lessons/155651 첫 번째 손님이 10시 10분에 퇴실 후 10분간 청소한 뒤 두 번째 손님이 10시 20분에 입실하여 사용할 수 있으므로 방은 1개만 필요합니다. 첫 번째 손님이 10시 10분에 퇴실하고 10분간 청소를 하면 10시 20분에는 입실할 수가 없다. 0.000000.....1초라도 일찍 퇴실하거나 뒷 손님이 0.000000000... 1초라도 늦게 입실해야 방 하나로 가능... 어쨌든 건 풀자... 딕셔너리로 풀어보았다. def solution(bookings): def booking2time(booking, is_end=False): return int(booking[:2]) * 60 + i..
-
숫자 변환하기코딩 테스트/Level 2 2023. 1. 28. 21:01
https://school.programmers.co.kr/learn/courses/30/lessons/154538 def solution(x, y, n): que = [(x, 0)] while que: x_, answer = que.pop(0) if x_ > y: continue if x_ == y: return answer que.append((x_ * 2, answer + 1)) que.append((x_ * 3, answer + 1)) que.append((x_ + n, answer + 1)) return -1 너비우선탐색(BFS) 으로... 넓이 아님~ 테스트 1 〉통과 (0.01ms, 10.3MB) 테스트 2 〉통과 (0.00ms, 10MB) 테스트 3 〉통과 (0.00ms, 10MB) 테스트..
-
뒤에 있는 큰 수 찾기코딩 테스트/Level 2 2023. 1. 28. 20:59
https://school.programmers.co.kr/learn/courses/30/lessons/154539 def solution(numbers): answer = [] for i in range(len(numbers)): for j in range(i + 1, len(numbers)): if numbers[j] > numbers[i]: answer.append(numbers[j]) break else: answer.append(-1) return answer 뭐 당연히 이런 코드로는 통과 불능... 예전 Level 2의 수준과 다르게 어려워 졌다. ㅜ,.ㅜ 편법이지만 뒤집어 생각하면 통과는 가능하다. def solution(numbers): answer = [-1 for _ in numbers..
-
무인도 여행코딩 테스트/Level 2 2023. 1. 28. 13:22
https://school.programmers.co.kr/learn/courses/30/lessons/154540 def solution(maps): def solve(start_y, start_x): que = [(start_y, start_x)] food = 0 while que: pos_y, pos_x = que.pop() if (pos_y, pos_x) not in visited: visited.add((pos_y, pos_x)) food += int(maps[pos_y][pos_x]) for diff_x, diff_y in ((1, 0), (-1, 0), (0, 1), (0, -1)): new_x, new_y = pos_x + diff_x, pos_y + diff_y if 0
-
시소 짝꿍코딩 테스트/Level 2 2023. 1. 19. 21:50
https://school.programmers.co.kr/learn/courses/30/lessons/152996 생각의 흐름을 따라... from itertools import product, combinations def solution(weights): answer = 0 for w1, w2 in combinations(weights, 2): for seat1, seat2 in product((2, 3, 4), repeat=2): if w1 * seat1 == w2 * seat2: answer += 1 break return answer 시간초과~! 레벨 2도 어렵다. 테스트 1 〉통과 (0.01ms, 10.2MB) 테스트 2 〉통과 (0.02ms, 10.2MB) 테스트 3 〉통과 (0.04ms,..
-
2023 KAKAO BLIND RECRUITMENT - 택배 배달과 수거하기코딩 테스트/Level 2 2023. 1. 6. 09:20
2023 KAKAO BLIND RECRUITMENT - 택배 배달과 수거하기 https://school.programmers.co.kr/learn/courses/30/lessons/150369 cap=4 일 때, 최소 거리로 배달을 완료하는 방법은 배달 갈 때 가장 먼 집부터 4개의 택배를 배달 돌아올 때도 가장 먼 집부터 4개의 바구니를 회수하는 것이다. 배달시, 회수시 각각 터닝 포인트 후보들을 뽑은 뒤 포인트의 쌍을 만들어 가장 먼 곳을 터닝 포인트로 잡으면 된다. def solution(cap, n, deliveries, pickups): def get_points(array): points = [] box, index = 0, n - 1 while index > -1: if array[index..
-
2023 KAKAO BLIND RECRUITMENT - 이모티콘 할인행사코딩 테스트/Level 2 2023. 1. 5. 22:35
https://school.programmers.co.kr/learn/courses/30/lessons/150368 def solution(users, emoticons): from itertools import product answer = [0, 0] for discounts in product((40, 30, 20, 10), repeat=len(emoticons)): sold = [0, 0] # 이모티콘, 판매액 for user_discount, user_money in users: sold_emoticons = 0 for emoticon, discount in zip(emoticons, discounts): if discount >= user_discount: sold_emoticons += em..