프로그래머스 - 타겟 넘버 (DFS를 구현하는 두가지 방법)
·
dev/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 이해주어진 숫자 배열에서 각 숫자 앞에 + 또는 - 기호를 붙여 연산하여 목표 값(target)을 만드는 문제다.만들 수 있는 모든 경우의 수를 탐색한 뒤, 그중 목표 값과 일치하는 경우의 수를 반환해야 한다. 예를 들어 numbers = [1, 1, 1, 1, 1], target = 3인 경우:-1 +1 +1 +1 +1 = 3 +1 -1 +1 +1 +1 = 3 +1 +1 -1 +1 +1 = 3 +1 +1 +1 -1 +1 = 3 +1 +1 ..
프로그래머스 - 모음 사전 (완전 탐색 VS 수학적 접근)
·
dev/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해'A', 'E', 'I', 'O', 'U' 5개 모음으로만 구성된 길이 5 이하의 모든 단어가 사전순으로 정렬된 사전에서, 특정 단어가 몇 번째인지 찾아야 한다.1. A2. AA 3. AAA4. AAAA5. AAAAA6. AAAAE7. AAAAI8. AAAAO9. AAAAU10. AAAE...접근법 1: 완전 탐색 (순열 생성)문제 그대로 구현하면 되겠지?→ 1) 단어 사전 순서로 된 배열을 생성한 후 2) 원하는 단어의 index+1 을 반환..
프로그래머스 - 소수 찾기 (순열과 소수)
·
dev/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 이해주어진 숫자 조각들로 만들 수 있는 모든 조합 중 소수의 개수를 구하는 문제. 핵심 조건:한자리 숫자들이 적힌 종이 조각을 사용조각들을 붙여서 다양한 길이의 숫자 생성생성된 숫자 중 소수인 것의 개수 반환예시: "17" → 가능한 조합: 1, 7, 17, 71 → 소수: 7, 17, 71 (3개)접근 전략두 단계로 나눠서 생각할 수 있겠다: 모든 가능한 숫자 조합 생성 (순열)생성된 숫자들 중 소수 판별1. 순열(Permutation)로 모든 ..
프로그래머스 - 베스트앨범 (해시 정렬하기)
·
dev/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1. 문제 이해요구사항:장르별로 가장 많이 재생된 노래를 최대 2개씩 선택3가지 우선순위: ①장르 총 재생수 ②노래별 재생수 ③고유번호입출력 예시 분석:genres = ["classic", "pop", "classic", "classic", "pop"]plays = [500, 600, 150, 800, 2500]classic: 총 1450회 (500+150+800)- 3번: 800회, 0번: 500회, 2번: 150회pop: 총 3100회 (600+250..
프로그래머스 - 구명보트 (그리디 알고리즘과 투 포인터)
·
dev/Algorithm
문제 이해제한된 조건 하에서 최소 개수의 보트로 모든 사람을 구출하는 최적화 문제. 핵심 조건:구명보트는 최대 2명까지만 탑승 가능각 보트마다 무게 제한 존재최소 개수의 보트로 모든 사람 구출최소 개수의 보트로 구출해야 하므로, 가장 무게 차이가 많이 나는 두 사람을 태우면 될 테다.→ 그리디 알고리즘으로 구현 가능! 그리디 알고리즘이란?그리디(Greedy) 알고리즘은 매 순간 "현재 상황에서 가장 좋아 보이는 선택"을 하는 알고리즘이다.그리디 알고리즘의 특징지역 최적해를 선택: 각 단계에서 가장 좋은 선택되돌리지 않음: 한 번 선택하면 바꾸지 않음단순하고 효율적: 대부분 O(n log n) 또는 O(n) 시간복잡도그리디가 적용되는 조건탐욕적 선택 속성: 지역 최적해가 전역 최적해로 이어짐 (이 문제 역..
프로그래머스 - 피로도
·
dev/Algorithm
문제 이해던전 탐험 순서를 최적화하는 완전탐색 문제.각 던전마다 "최소 필요 피로도"와 "소모 피로도"가 있고, 주어진 피로도로 최대한 많은 던전을 탐험하는 것이 목표다.입력: 현재 피로도 k, 던전 정보 배열 dungeons출력: 탐험 가능한 최대 던전 수제약: 던전 개수 1~8개 (완전탐색 가능한 범위)핵심은 던전을 탐험하는 순서가 결과에 영향을 미친다는 점. 따라서 모든 가능한 순서를 시도해봐야 한다. 시행착오 과정첫 번째 접근: 복잡한 재귀 구조처음에는 "각 던전을 시작점으로 해서 모든 경우를 탐색하자"는 발상으로 접근했다.function solution(k, dungeons) { let answer = -1 function exploreDungeon(currentK, targetDun..
프로그래머스 - 의상
·
dev/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 문제 이해코니가 매일 다른 옷을 조합하여 입는 문제였다. 핵심 조건들을 정리하면:각 종류별로 최대 1가지 의상만 착용 가능하루에 최소 한 개의 의상은 착용해야 함서로 다른 조합의 수를 구해야 함예시를 보면 headgear에 2개, eyewear에 1개 의상이 있을 때 총 5가지 조합이 가능했다:yellow_hatblue_sunglassesgreen_turbanyellow_hat + blue_sunglassesgreen_turban + blue_su..
프로그래머스 - 연속 부분 수열 합의 개수
·
dev/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 문제 이해원형 수열: 처음과 끝이 연결된 구조연속 부분 수열: 인접한 원소들로 이루어진 수열중복 제거: 같은 합이 여러 번 나올 수 있음예시: [7, 9, 1, 1, 4]길이 1: [1, 4, 7, 9] → 4가지 합길이 2: [2, 5, 10, 11, 16] → 5가지 합길이 3: [6, 11, 12, 17, 20] → 5가지 합길이 4: [13, 15, 18, 21] → 4가지 합길이 5: [22] → 1가지 합중복 제거 후 총 18가지의 서..