코딩테스트/프로그래머스

    [프로그래머스] Level 2 - 게임 맵 최단거리 (Python)

    [프로그래머스] Level 2 - 게임 맵 최단거리 (Python)

    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 ✅ Solution 최단거리 구하는 문제므로 BFS를 이용한다. ✅ Code from collections import deque def solution(maps): n, m = len(maps), len(maps[0]) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] queue = deq..

    [프로그래머스] Level 2 - 배달 (Python)

    [프로그래머스] Level 2 - 배달 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr ✅ Solution 한 정점으로부터 다른 모든 정점까지의 최단 거리를 구해야 하므로 다익스트라 알고리즘을 이용한다. heapq를 이용하여 다익스트라 알고리즘을 구현한 뒤, K 이하의 거리를 가지는 정점의 수를 세어준다. 양방향, 즉 a->b, b->a 모두 가능하므로 주의하면서 간선 정보를 처리한다. ✅ Code import heapq ..

    [프로그래머스] Level 2 - 괄호 회전하기 (Python)

    [프로그래머스] Level 2 - 괄호 회전하기 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr ✅ Solution deque를 이용해 문자 하나씩 빼주면서 stack 가장 마지막 요소와 짝일 때, stack의 마지막 요소를 pop 해주고 짝이 아니라면 빼준 문자를 stack에 넣어준다. stack에 남아있는 문자가 없을 때 올바른 괄호 문자열임을 의미하므로 answer에 1을 더해준다. ✅ Code from collections import deque def isCorrect(s): stack = [] s = deque(s) while s: tmp = s.popleft() if stack: if tmp == ']' and stack..

    [프로그래머스] Level 2 - 짝지어 제거하기 (Python)

    [프로그래머스] Level 2 - 짝지어 제거하기 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr ✅ Solution answer의 길이가 0이라면 문자를 그냥 넣어준다. 만약 1이 아니라면 answer의 가장 마지막 요소와 alpha를 비교하여 같다면 짝지어 제거할 수 있으므로 answer.pop()을 이용하여 제거해준다. 다르다면 alpha를 answer에 넣어준다. answer의 길이가 0이라면 모두 짝지어 없어진 것을 의미하므로 1을 리턴..

    [프로그래머스] Level 2 - 타겟 넘버 (Python)

    [프로그래머스] Level 2 - 타겟 넘버 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr ✅ Solution deque를 이용하여 idx가 numbers의 길이보다 작을 때만 +, - 의 경우를 모두 구해준다. 만약 idx가 numbers의 길이가 같은 경우에는 target값과 비교하여 같다면 answer에 1을 더해준다. ✅ Code from collections import deque def solution(numbers,..

    [프로그래머스] Level 2 - 더 맵게 (Python)

    [프로그래머스] Level 2 - 더 맵게 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr ✅ Solution 가장 작은 값에 반복적으로 접근해야 하므로 heapq 모듈을 사용한다. heapq의 heapify를 이용하여 scoville 배열을 최소 힙 자료구조로 변환한다. 가장 작은 스코빌 지수가 k보다 작다는 조건을 이용하여 반복문을 돌린다. 반복문에서는 가장 작은 스코빌 지수와 두 번째로 작은 스코빌 지수를 heapq.heappop()..

    [프로그래머스] Level 2 - 주차 요금 계산 (Python)

    [프로그래머스] Level 2 - 주차 요금 계산 (Python)

    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 ✅ Solution defaultdict을 이용하여 차량별로 입/출차 내역을 저장해둔다. 그리고 defaultdict, infos의 키를 확인하면서 주차 요금을 계산해준다. 만약 해당 ..

    [프로그래머스] Level 2 - 양궁대회 (Python)

    [프로그래머스] Level 2 - 양궁대회 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/92342 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr ✅ Solution combinations_with_replacements를 이용하여 라이언이 쏠 수 있는 점수들의 조합, candidates를 모두 구한다. candidates를 돌면서 라이언의 점수를 계산해주고, 어피치 점수와 비교한다. 점수 차이가 같을 때는 낮은 점수의 비중이 큰 경우를 리턴하라고 했으니 낮은 점수를 먼저 채우면서 라이언의 점수를 만든다. 그렇..