목록알고리즘/프로그래머스 (48)
여름의 서재
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/17680
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 💡 풀이법 1. 1부터 n^2까지 삼각형을 돌면서 숫자를 채워넣어야 한다. 2. 만약 n이 4라면 삼각형의 꼭대기에서 아래로 4번, 오른쪽으로 3번, 위로 2번, 아래로 1번 채워넣는다. 즉, 아래 n번 -> 오른쪽 n-1번 -> 위 n-2번 -> 아래 n-3번 -> 오른쪽 n-4번 -> .... ->1번 이런식으로 반복이 된다. 단, 위로 올라가는건 삼각형이..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 💡 풀이법 def solution(routes): answer = 1 routes.sort(key = lambda x:x[1]) camera = routes[0][1] for route in routes[1:]: if camera < route[0]: camera = route[1] answer += 1 return answer
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 💡 풀이법 : dp 를 이용해서 각 초마다 누적 사람수를 기록하는 문제이다. 시간이랑 분은 모두 초로 바꿔서 생각하자. def solution(play_time, adv_time, logs): p_h, p_m, p_s = map(int, play_time.split(':')) a_h..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/64062 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr 💡 풀이법 : 배열의 크기가 20만이고 원소들의 값들이 2000만이 최대였기 때문에 바로 logN의 시간복잡도를 가지는 이분탐색을 생각했다. 1. 구하고자 하는 최대 사람수를 1부터 배열의 값 중 가장 큰 값 사이에서 구해야한다. 2. 값을 최소와 최대값의 반으로 설정하고 돌들을 돌면서 그만큼의 사람이 갈 수 있는지 구한다. 3. 갈 수 없으면 값을 줄이고(최소값과 현재 사람수의 반), 갈 수 있다면 값을 늘린다(현재 사람수와 최대값의 반). def solution(..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/92341 코딩테스트 연습 - 주차 요금 계산 [180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000] programmers.co.kr 💡 풀이법 1. 차의 입차 시간과 담을 cars 딕셔너리를 만든다. 2. 차들의 총 주차 시간을 담을 total 딕셔너리를 만든다. 3. records를 돌면서 cars에 입차..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 💡 풀이법 : 다익스트라 알고리즘을 사용하는 간단한 문제였다. from collections import deque dxy = [(1,0),(0,1),(-1,0),(0,-1)] def bfs(maps, n, m): deq = deque([(0, 0)]) visited = [[0 for _ in ran..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 programmers.co.kr 💡 풀이법 : 열심히 그려보다 보면 의외로 쉽게 규칙을 알 수 있다. -> n = n-1 + n-2 def solution(n): a,b = 1,1 for i in range(n): a,b = b, a+b return a%1000000007