코딩 테스트
-
코딩테스트 / 혼자서 하는 틱택토코딩 테스트/Level 2 2023. 2. 25. 18:16
https://school.programmers.co.kr/learn/courses/30/lessons/160585 이런저런 케이스를 다 생각해서 풀어야 하는 문제... 1. 선공인 O와 후공인 X의 개수가 1 이상 나면 안 된다. 2. O와 X가 동시에 이겨서는 안 된다. 3. O가 이겼을 때 다음 X는 없다. 그러므로 O가 X보다 1개 많아야.. 4. X가 이겼을 때 다음 O는 없다. 그러므로 O와 X의 개수가 같아야.. 코틀린 class Solution { private fun countMarker(board: Array): Pair { var (oCounter, xCounter) = arrayOf(0, 0) for (line in board) for (each in line) if (each ==..
-
프로그래머스 / 대충 만든 자판코딩 테스트/Level 1 2023. 2. 25. 14:15
https://school.programmers.co.kr/learn/courses/30/lessons/160586 딕셔너리, 맵을 이용 하자. 키를 누름 횟수가 작은 것을 기준으로 딕셔너리에 저장한 뒤... 코틀린 class Solution { fun solution(keymap: Array, targets: Array): IntArray { val answer = mutableListOf() val counter = mutableMapOf() for (each in keymap) for ((index, key) in each.withIndex()) if ((counter[key] ?: index) >= index) counter[key] = index for (target in targets) { v..
-
코딩테스트 / 미로 탈출코딩 테스트/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 1 2023. 2. 18. 10:14
https://school.programmers.co.kr/learn/courses/30/lessons/159994 코틀린 class Solution { fun solution(cards1: Array, cards2: Array, goal: Array): String { var index1 = 0 var index2 = 0 for (each in goal) when { index1 index1++ index2 index2++ else -> return "No" } return "Yes" } } 파이썬 def solution(cards1, cards2, ..
-
호텔 대실코딩 테스트/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 1 2023. 2. 2. 22:11
https://school.programmers.co.kr/learn/courses/30/lessons/155652 파이썬 def solution(s, skip, index): text = [each for each in 'abcdefghijklmnopqrstuvwxyz' * 3 if each not in skip] return ''.join(text[text.index(each) + index] for each in s) 테스트 1 〉통과 (0.02ms, 10.1MB) 테스트 2 〉통과 (0.02ms, 10.2MB) 테스트 3 〉통과 (0.02ms, 10.3MB) 테스트 4 〉통과 (0.01ms, 10.4MB) 테스트 5 〉통과 (0.02ms, 10.2MB) 테스트 6 〉통과 (0.02ms, 10.2M..
-
숫자 변환하기코딩 테스트/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..