프로그래머스
[프로그래머스] 단어 변환 (Python)
문제 begin으로 주어진 단어에서 시작해 target 단어를 만드려고 한다. words에 주어진 단어 리스트를 사용해 target 단어로 변환할 수 있는데, 한 번에 알파벳이 1개만 다른 단어로 변환할 수 있다. 가장 짧은 변환 과정은? (문제 링크) 내 풀이 BFS로 풀이했으며 deque 라이브러리로 큐를 사용했다. words에 존재하지 않아 변환할 수 없는 단어는 0을 반환한다. (시작 단어, 0)을 queue에 넣는다. queue 요소를 하나 꺼내고, 꺼낸 단어와 1글자만 다른 단어를 큐에 삽입한다. 정답 단어를 찾으면 반환하고, 찾지 못하면 계속 반복한다. from collections import deque # 한 글자만 다른 단어인지 확인 def is_valid(word, target): s..
[프로그래머스] 괄호 변환 (Python) / 카카오 2020
문제 위의 규칙에 따라 입력 문자열을 "올바른 괄호 문자열"로 변환하려고 한다. 문제 링크 재귀는 특정 과정(규칙)을 특정 조건까지 수행한 결과를 반환하는 문제가 대부분이다. 몇 단계만 그림을 그려보면 재귀를 이해하는데 큰 도움이 된다. p = "()))(())" 일 때 올바른 괄호 문자열로 변화하는 과정을 그리면 위의 그림과 같다. 풀이 is_balanced() : 균형잡힌 문자열인지 확인하는 함수: ( 괄호와 ) 괄호의 개수가 같은지 확인 is_correct() : 올바른 문자열인지 확인하는 함수 → 스택(deque 또는 list)을 사용해 이전 요소와 짝이 맞으면(반대되는 괄호이면) 이전 요소를 삭제하고, 짝이 맞지 않으면(동일한 괄호이면) 삽입한다. do_split() : u, v를 쪼개는 함수 ..
[프로그래머스] 메뉴 리뉴얼 (Python) / 카카오 2021
문제 문제 링크 각 손님이 주문한 단품 메뉴 중 원하는 개수만큼 메뉴를 조합해 코스 요리를 만드려고 한다. 이 때 코스요리에 속하는 단품 메뉴가 같은 경우에는 단품 주문을 가장 많이 한 조합만 구한다. 접근법 각 손님이 주문한 메뉴로 만들 수 있는 모든 코스요리 조합 구하기 → combinations 사용 각 코스요리의 주문 횟수가 2회 이상 & 코스요리 크기가 course에 해당하는 메뉴 필터링 코스요리 크기가 동일한 요리 중 가장 주문을 많이 한 메뉴만 남긴다. → target에 코스요리 이름만 저장 저장한 메뉴를 알파벳 순서로 정렬해 반환한다. 첫 번째 시도 각 손님의 주문을 탐색하면서: 2 ~ 주문한 음식의 개수 만큼 음식을 선택해 코스요리의 조합을 구한다. 주문 횟수가 2회 이상인 조합 중 음식..