Algorithm/프로그래머스

    [프로그래머스] 개인정보 수집 유효기간 - 파이썬

    2023 KAKAO BLIND RECRUITMENT - 150370. 개인정보 수집 유효기간 [Lv. 1] https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 딱히 설명할 부분은 없는 Lv. 1 문제. String Slicing과, 유효기간은 개인정보를 보관할 수 있는 달 수를 나타내는 정수이며, 1 이상 100 이하입니다. 라는 설명에 주의하며, month -= 12, year += 1 을 만족할 때까지 반복해줘야 함에만 신경써주면 될 것..

    [프로그래머스] 미로 탈출 명령어 - 파이썬

    2023 KAKAO BLIND RECRUITMENT - 150365. 미로 탈출 명령어 [Lv. 3] https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 우선, 'impossible'을 출력해야 하는 경우를 먼저 알아보자.. 간단하게 생각해 보면, 출발지에서 도착지까지 도달할 수 있는 최소 거리를 h라 했을 때, k = h+(0을 포함한 짝수) 여야 어떻게든 도달할 수 있다. 따라서, k보다 h가 작은 경우나, k = h + (홀수) 인 경..

    [프로그래머스] 표현 가능한 이진트리 - 파이썬

    2023 KAKAO BLIND RECRUITMENT - 150367. 표현 가능한 이진트리 [Lv. 3] https://school.programmers.co.kr/learn/courses/30/lessons/150367 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 우선 예시를 한번 쭉 나열해 보며 감을 잡자. depth..? height..? 가 1일 때는, 0, 1만이 표현 가능하다. height = 2이면, 1, 3번째 숫자 중 1이 있다면 2번째 숫자는 무조건 1이여야 하므로, 111, 110, 011, 010, (000)의 4(5)가지의 ..

    [프로그래머스] 택배 배달과 수거하기 - 파이썬

    2023 KAKAO BLIND RECRUITMENT - 150369. 택배 배달과 수거하기 [Lv. 2] https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제를 읽고 나서의 초견은, Greedy하게 접근하면 되지 않을까? 였다. 제일 먼 곳에서부터 배달/수거를 cap만큼 꽉꽉 채워서 왔다갔다 하는 식으로.. 일단 구현해보자. 조금 유의하며 코드를 작성했던 부분은, deliveries나 pickups 배열에서 값이 존재하는(0이 아닌) 가..

    [프로그래머스] 67260. 동굴 탐험

    2020 카카오 인턴십 - 67260. 동굴 탐험 Python 풀이 풀이 복잡한 알고리즘을 생각할 필요 없이, BFS로 탐색하면서 order (방문 순서) 만 처리해 주면 된다고 생각했다. 그리고 효율성을 위해 방문 체크는 Hash로 구성된 Set을 이용. 근데.. 각 루프마다 False 체크를 하니까 시간초과가 난다. def A(): for room in rooms: if room not in follow: return False return True 얘 때문 맞는듯.. Code from collections import deque def solution(n, path, order): pre = [i[0] for i in order] follow = [i[1] for i in order] visit =..

    [프로그래머스] 67258. 보석 쇼핑

    2020 카카오 인턴십 - 67258. 보석 쇼핑 Python 풀이 풀이 1 Two Pointer(투 포인터) 알고리즘을 이용해 풀이. 외국에선.. Two Pointer Technique(투 포인터 테크닉) 이라고 부르는 듯. start, end Pointer를 정하고, 처음엔 조건을 만족할 때까지 end += 1 그 이후, 조건을 만족하는 한 start += 1 그렇게 조건을 만족하는 [start, end]를 구함. 그 이후, 뒤쪽에 더 짧은 답이 존재할 수 있으니 end에 +1을 해주며, end < len(gems) 이하에서 반복. 그렇게 Two Pointer를 이용해 풀이하였으나, 시간 초과. Code def solution(gems): gemList = len(set(gems)) start = 0..

    [프로그래머스] 67256. 키패드 누르기

    2020 카카오 인턴십 - 67256. 키패드 누르기 Python 풀이 풀이 dictionary로 각 키패드의 행, 렬을 저장하고, 이를 이용해 키패드간의 거리를 계산하면서 if-else문을 통해 처리. Code from collections import deque def solution(numbers, hand): isRight = True if (hand == "right") else False keyPad = {1: [1, 1], 2: [1, 2], 3: [1, 3], 4: [2, 1], 5: [2, 2], 6: [2, 3], 7: [3, 1], 8: [3, 2], 9: [3, 3], &#39;*&#39;: [4, 1], 0: [4, 2], &#39;#&#39;: [4, 3]} def distanc..

    [프로그래머스] 67257. 수식 최대화

    2020 카카오 인턴십 - 67257. 수식 최대화 Python 풀이 풀이 우선, 이런 중위 표현식, 후위 표현식, 연산자 우선순위에 관한 문제들을 숱히 Stack으로 풀어 왔기에, Stack을 이용해 풀이해 보자 - 라고 생각했으나, 굳이 그럴 필요 없을 것 같아서 간단하게 생각하여 풀이했다. 우선순위 경우의 수가 최대 6가지밖에 없으니, 6가지 경우의 수를 모두 따져 보아 계산한다. 만약, 우선순위가 [&#39;*&#39;, &#39;-&#39;, &#39;+&#39;] 라면, &#39;*&#39; 를 모두 찾아 앞뒤로 계산 후 다시 그 index쪽에 집어넣고, 그 다음 &#39;-&#39; 도 같은 방법으로. 마지막으로 &#39;+&#39; 도 같은 방법으로 계산. 예를 들어, 아래와 같다면, ex..