코딩 테스트
-
프로그래머스 / 과제 진행하기코딩 테스트/Level 2 2023. 4. 1. 13:22
https://school.programmers.co.kr/learn/courses/30/lessons/176962 파이썬 def solution(plans): timeline = [] plans2 = map(lambda x: (x[0], int(x[1][0]) * 60 + int(x[1][1]), x[2]), map(lambda x: (x[0], x[1].split(':'), int(x[2])), plans)) for name, start, playtime in sorted(plans2, key=lambda x: x[1]): for index, each in enumerate(timeline): if each[1] > start: timeline[index][1] += playtime timeline...
-
프로그래머스 / 추억 점수코딩 테스트/Level 1 2023. 4. 1. 07:47
https://school.programmers.co.kr/learn/courses/30/lessons/176963 파이썬 def solution(name, yearning, photo): scores = {n: s for n, s in zip(name, yearning)} return [sum(scores.get(person, 0) for person in pic) for pic in photo] def solution(name, yearning, photo): return [sum({n: s for n, s in zip(name, yearning)}.get(person, 0) for person in pic) for pic in photo] 코틀린 class Solution { fun solution..
-
프로그래머스 / 광물 캐기코딩 테스트/Level 2 2023. 3. 24. 15:21
https://school.programmers.co.kr/learn/courses/30/lessons/172927 파이썬 제안사항을 확인하니 재귀를 이용해도 될 정도 def solution(picks, minerals): def solve(picks, minerals, fatigue): if sum(picks) == 0 or len(minerals) == 0: return fatigue result1 = result2 = result3 = float('inf') if picks[0] > 0: fatigues = {"diamond": 1, "iron": 1, "stone": 1} next_fatigue = sum(fatigues[mineral] for mineral in minerals[:5]) resu..
-
프로그래머스 / 공원 산책코딩 테스트/Level 1 2023. 3. 24. 00:01
https://school.programmers.co.kr/learn/courses/30/lessons/172928 파이썬 def solution(park, routes): position = [0, 0] for i, row in enumerate(park): for j, each in enumerate(row): if each == 'S': position = [i, j] directions = {'E': (0, 1), 'W': (0, -1), 'N': (-1, 0), 'S': (1, 0)} for direction, distance in map(lambda x: x.split(), routes): prev_pos = position.copy() for _ in range(int(distance)): ..
-
프로그래머스 / 리코쳇 로봇코딩 테스트/Level 2 2023. 3. 17. 16:06
https://school.programmers.co.kr/learn/courses/30/lessons/169199 주의할 점. 목표도 통과해 버린다. 목표에 멈출 수 있어야 성공~! 파이썬 def solution(board): que = [] for x, row in enumerate(board): for y, each in enumerate(row): if each == 'R': que.append((x, y, 0)) visited = set() while que: x, y, length = que.pop(0) if (x, y) in visited: continue if board[x][y] == 'G': return length visited.add((x, y)) for diff_x, diff_y ..
-
프로그래머스 / 당구 연습코딩 테스트/Level 1 2023. 3. 17. 11:27
https://school.programmers.co.kr/learn/courses/30/lessons/169198 경계면을 기준으로 '접힌 상태를 편다'라고 생각하면 간단하다.. '피타고라스의 정의'를 이용해 거리를 계산. 파이썬 def solution(m, n, sx, sy, balls): return [ min((sx - x) ** 2 + (sy - y) ** 2 for x, y in ((-bx, by), (bx, -by), (2 * m - bx, by), (bx, 2 * n - by)) if not ((sx == bx and (sy > by > y or sy bx > x or sx < bx < x))) ) for bx, by in bal..
-
프로그래머스 / 리틀 프렌즈 사천성코딩 테스트/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..