프로그래머스 17

[프로그래머스] 여행 경로 by 파이썬(Python) : DFS

https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 난이도 LV3 문제 설명 [출발지,도착지] 형태로 적힌 항공권 정보 List가 주어진다. 출발지는 항상 ICN 공항에서 출발하며 모든 항공권을 사용해야 한다. 이를 만족하는 경로를 Return하고 만약 만족하는 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 Return한다. 접근법 스택에 ICN을 넣어준다. 출발지와 도착지 정보가 담긴 dictionary 배열의 key(출발지) 와 valu..

[프로그래머스] 가장 먼 노드 by 파이썬(Python) : 그래프 bfs

https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 난이도 LV 3 문제 설명 n개의 노드가 주어지고 1번 노드로 부터 가장 먼 노드의 갯수를 구해서 Return 해주어야 한다. 이때 가장 멀리 떨어진 노드란 최단 경로로 이동했을 때 간선의 갯수가 가장 많은 노드를 의미한다. 접근법 그래프 이론 알고리즘의 인접 리스트 방식으로 주어진 입력을 변환해준다. 거리(간선 개수)를 저장 해줄 리스트를 만들고 BFS를 사용해 최단 경로의 간선 개수를 센후 저..

[프로그래머스] 2022 KAKAO BLIND RECRUITMENT 파괴되지 않은 건물 by 파이썬 (Python) :누적합

https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 2차원 배열에 두 좌표(r1,c1) (r2,c2)사이의 값을 type에 따라 감소 또는 회복 시켜야한다. type == 1 이면 degree만큼 감소한다. type == 2 이면 degree만큼 회복한다. 모두 마친 후 0 이상인 좌표의 갯수를 return해준다. 시간 복잡도는 O(1)로 해결해야 한다. 접근법 브루토 포스로 해결할 경우 시간 복잡도가 O(N*M*K)이므로 시간초과 발생..

[프로그래머스] 2020 KAKAO BLIND RECRUITMENT 문자열 압축 by 파이썬(Python)

https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV2 문제이해 문자를 일정 단위로 압축할 수 있다. 최대로 압축하는 한 경우의 문자열 길이를 찾아내기. 풀이법 파이썬의 리스트 슬라이싱을 활용해 문자열을 잘라내 압축 문자열을 만든다. 현재 문자열과 이전 문자열이 같다면 압축 성공 다른 경우에 한번도 압축이 되지않는다면 그대로 표시, 압축이 두번이상 되었다면 압축해서 표시해준다. arr에 현재 i만큼 자르면서 만든 압축 문자열의 길이를 저장한다...

[프로그래머스] 연속된 부분 수열의 합 by 파이썬 (python) Lv2

https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr lv2 문제 이해 붙어 있는 수들의 합으로 k를 만들어야 한다. 답이 여러개인 경우 길이가 가장 짧은 수열을 찾아야 한다. 길이가 가장 짧은 수열이 여러개인 경우 앞쪽에 나오는 수열을 찾는다. 접근법 투포인터 알고리즘을 사용하여 합이 k 인 부분 수열을 찾는다. right가 오른쪽 끝까지 갈때 까지 반복문을 돌린다. 1. 합이 k와 같은 경우 - 해당 부분의 수열의 길이를 계산하고 가장 짧은 길..

[프로그래머스] 호텔 대실 LV2 by 파이썬 (python)

https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 1. 최소한의 객실만을 사용하여 예약손님 받기 2. 퇴실 기준 10분이후에 다음 손님 사용 가능 3. 00:00 ~ 23:59 접근법 1. heapq를 사용하여 객실의 끝나는 시간을 저장하기 2. 가장 빨리 끝나는 시간과 다음 이용자의 시작 시간을 비교 3. 다음 이용자의 시작시간이 더 느리다면 같은 객실을 이용 가능한 것 => heappop으로 앞의 시간 제거 4. 마지막에 heap..

프로그래머스[2021 KAKAO BLIND RECRUITMENT] 메뉴 리뉴얼 by 파이썬 (python)

https://school.programmers.co.kr/learn/courses/30/lessons/72411 난이도 LV.2 문제 이해 1. 코스요리를 구성하는 단품메뉴 갯수가 담긴 course로 코스요리를 분류하기. 2. 최소 2명 이상의 손님으로부터 주문된 단품 메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함. 3. 각 갯수에 따른 코스요리별 가장 많이 주문된 메뉴구성이 해당 코스 요리로 선정된다. ㄴ 만약 가장 많이 주문된 메뉴구성이 여러개 ( 횟수 동일) 하다면 모두 코스요리 선정 접근법 1. 파이썬의 itertools를 이용해 조합(combinations)을 사용하여 주문된 단품메뉴로 만들 수 있는 모든 코스 요리 만들기. 2. 파이썬의 Counter을 사용해 중복된 데이터가 저장된 배열이..