전체보기
-
프로그래머스 / 리틀 프렌즈 사천성코딩 테스트/Level 3 2023. 3. 5. 22:03
https://school.programmers.co.kr/learn/courses/30/lessons/1836 자바 1. Sort를 해야하니 TreeMap을 이용하자. 2. 길을 찾을 때 ㄱ 방향, ㄴ 방향을 고려해야 한다. 3. 구현 문제다. import java.util.*; class Solution { char[][] board; public String solution(int m, int n, String[] board) { this.board = new char[m][n]; var pairs = new TreeMap(); for (var i = 0; i < m; i++) for (var j = 0; j < n; j++) { var temp = board[i].charAt(j); this.bo..
-
프로그래머스 / 예선캠핑코딩 테스트/Level 3 2023. 3. 5. 13:15
https://school.programmers.co.kr/learn/courses/30/lessons/1833 1. 누적합을 2차원으로 이용한다. (일종의 DP) 2. 좌표를 그대로 쓰면 불필요하게 넓은 공간을 사용해야 한다. 2^31-1 개의 공간에 5000개의 좌표. 파이썬 from itertools import combinations def solution(n, data): # x좌표 추출 -> 정렬 후 인덱스를 붙인 뒤 '값: 인덱스'로 딕셔너리에 저장, # 값으로 인덱스를 찾을 수 있도록 한다. y 좌표들도 마찬가지... x_dic = {x: i for i, x in enumerate(sorted({each[0] for each in data}))} y_dic = {y: i for i, y i..
-
프로그래머스 / 연속 펄스 부분 수열의 합코딩 테스트/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..