코딩 테스트
-
프로그래머스 / 연속 펄스 부분 수열의 합코딩 테스트/Level 3 2023. 3. 4. 10:33
https://school.programmers.co.kr/learn/courses/30/lessons/161988 문제를 보면 바로 누적합(cumulative sum, prefix sum)이 떠오른다. 조금 더 생각해 보자. 최솟값, 최댓값에도 누적을 사용하면 어떨까? 레벨3치곤 쉬운데... 파이썬 혹시 이게 될까 했는데 되네. 바다코끼리 연산자~! 대박.. from itertools import cycle, chain from functools import reduce def solution(sequence): temp1, temp2, temp3 = 0, 100000, -100000 s_cum = tuple(chain((0,), (temp1 := temp1 + each1 * each2 for each..
-
프로그래머스 / 덧칠하기코딩 테스트/Level 2 2023. 3. 4. 00:40
https://school.programmers.co.kr/learn/courses/30/lessons/161989 이게 왜 level 2? 쉬운데... 코틀린 class Solution { fun solution(n: Int, m: Int, section: IntArray): Int { var (answer, painted) = 0 to 0 for (each in section) if (each >= painted) { painted = m + each answer++ } return answer } } golang func solution(n int, m int, section []int) int { answer, painted := 0, 0 for _, v := range section { if v..
-
프로그래머스 / 바탕화면 정리코딩 테스트/Level 1 2023. 3. 2. 18:26
https://school.programmers.co.kr/learn/courses/30/lessons/161990 파이썬 def solution(wallpaper): x_min = y_min = float('inf') x_max = y_max = 0 for x, row in enumerate(wallpaper): for y, each in enumerate(row): if each == '#': x_min = min(x, x_min) x_max = max(x, x_max) y_min = min(y, y_min) y_max = max(y, y_max) return [x_min, y_min, x_max + 1, y_max + 1] 코틀린 import kotlin.math.* class Solution { ..
-
코딩테스트 / 혼자서 하는 틱택토코딩 테스트/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..