올바른 괄호의 갯수 (예제 코드와 시행착오)
·
Programming/코딩 테스트
프로그래머스 문제 링크문제 설명길이가 2n인 괄호 문자열 중에서 올바른 괄호 문자열의 개수를 구하는 문제입니다. 올바른 괄호란, 열리는 괄호 (가 닫히는 괄호 )보다 먼저 나오고, 모든 괄호가 짝을 이루는 형태를 말합니다.첫 시도: 문자열 기반의 DFS 구현def solution(n): answer = 0 str_list = "()" stack = [(1, "(", 1, 0)] while stack: depth, current_str, open_count, close_count = stack.pop() if depth == n * 2: if current_str == "": answer += 1 ..
프로그래머스 불량 사용자 문제 풀이 (Python + 정규식 + DFS)
·
Programming/코딩 테스트
프로그래머스 Level 3 문제인 불량 사용자는 정규표현식과 조합, 그리고 백트래킹(DFS)에 대한 이해가 필요한 문제입니다. 이 글에서는 문제 해결 과정을 단계별로 소개하고, 핵심 개념들을 요약합니다.🔍 문제 요약user_id: 사용자들의 ID 리스트banned_id: 불량 사용자 패턴 리스트 ( * 는 와일드카드 )조건에 맞는 사용자 ID 조합의 경우의 수를 구하라 (중복 없이)🧠 핵심 아이디어banned_id의 각 패턴을 정규식으로 변환각 패턴에 매칭되는 user_id 후보 리스트 생성DFS를 사용해 가능한 조합을 탐색조합이 중복되지 않도록 frozenset을 활용하여 정답 저장✅ 최종 풀이 코드 (Python)import redef solution(user_id, banned_id): a..
[프로그래머스] 이모티콘 할인행사 - 백트래킹 + 가지치기 풀이
·
Programming/코딩 테스트
🏝️ 문제 개요문제 링크: 프로그래머스 - 이모티콘 할인행사문제 요약:maps라는 문자열 2차원 배열에서 'X'가 아닌 숫자들은 음식량을 의미하며, 상하좌우로 연결된 땅 덩어리(무인도)를 찾아 음식 총합을 구한 후 오름차순으로 정렬하는 문제.❓ 문제 요약각 유저는 할인율 기준과 이모티콘 플러스 가입 기준 금액을 가짐이모티콘마다 할인율을 10%, 20%, 30%, 40% 중 하나로 정해야 함목표는:이모티콘 플러스 가입자를 최대화동일한 수일 경우, 이모티콘 판매액을 최대화🧠 접근 방법기본적으로는 할인율 조합을 모두 탐색해야 함 → 4ⁿ 조합하지만:이모티콘 수가 많아지면 조합 수가 급격히 증가itertools.product로는 모든 조합을 한 번에 생성하기 때문에 최적화 불가따라서 재귀(DFS) + 가지치..
프로그래머스 무인도 여행 문제풀이 - DFS 재귀에서 런타임 에러가 난 이유
·
Programming/코딩 테스트
Python DFS 재귀 방식으로 접근했다가 RecursionError를 경험하고, return 기반 방식으로 개선한 기록입니다.🏝️ 문제 개요문제 링크: 프로그래머스 - 무인도 여행문제 요약:maps라는 문자열 2차원 배열에서 'X'가 아닌 숫자들은 음식량을 의미하며, 상하좌우로 연결된 땅 덩어리(무인도)를 찾아 음식 총합을 구한 후 오름차순으로 정렬하는 문제.🧪 [프로그래머스 무인도 여행] 첫 시도 - Python 재귀 DFS처음엔 DFS로 연결된 지점을 탐색해 음식량을 누적하려고 했습니다.이때 숫자 누적이 잘 안 돼서 temp_list라는 전역 리스트를 써서 처리했어요.import syssys.setrecursionlimit(10 ** 6)def solution(maps): directio..