프로그래머스 - 베스트앨범 (해시 정렬하기)
·
Learn/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..
프로그래머스 - 구명보트 (그리디 알고리즘과 투 포인터)
·
Learn/Algorithm
문제 이해제한된 조건 하에서 최소 개수의 보트로 모든 사람을 구출하는 최적화 문제. 핵심 조건:구명보트는 최대 2명까지만 탑승 가능각 보트마다 무게 제한 존재최소 개수의 보트로 모든 사람 구출최소 개수의 보트로 구출해야 하므로, 가장 무게 차이가 많이 나는 두 사람을 태우면 될 테다.→ 그리디 알고리즘으로 구현 가능! 그리디 알고리즘이란?그리디(Greedy) 알고리즘은 매 순간 "현재 상황에서 가장 좋아 보이는 선택"을 하는 알고리즘이다.그리디 알고리즘의 특징지역 최적해를 선택: 각 단계에서 가장 좋은 선택되돌리지 않음: 한 번 선택하면 바꾸지 않음단순하고 효율적: 대부분 O(n log n) 또는 O(n) 시간복잡도그리디가 적용되는 조건탐욕적 선택 속성: 지역 최적해가 전역 최적해로 이어짐 (이 문제 역..
프로그래머스 - 피로도
·
Learn/Algorithm
문제 이해던전 탐험 순서를 최적화하는 완전탐색 문제.각 던전마다 "최소 필요 피로도"와 "소모 피로도"가 있고, 주어진 피로도로 최대한 많은 던전을 탐험하는 것이 목표다.입력: 현재 피로도 k, 던전 정보 배열 dungeons출력: 탐험 가능한 최대 던전 수제약: 던전 개수 1~8개 (완전탐색 가능한 범위)핵심은 던전을 탐험하는 순서가 결과에 영향을 미친다는 점. 따라서 모든 가능한 순서를 시도해봐야 한다. 시행착오 과정첫 번째 접근: 복잡한 재귀 구조처음에는 "각 던전을 시작점으로 해서 모든 경우를 탐색하자"는 발상으로 접근했다.function solution(k, dungeons) { let answer = -1 function exploreDungeon(currentK, targetDun..
프로그래머스 - 의상
·
Learn/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..
프로그래머스 - 연속 부분 수열 합의 개수
·
Learn/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가지의 서..
프로그래머스 - 짝지어 제거하기
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1. 문제 이해연속된 같은 문자 2개를 찾아서 제거제거 후 앞뒤 문자열을 이어 붙임이 과정을 반복해서 모든 문자를 제거할 수 있으면 1, 아니면 0 2. 시행착오문제 설명 그대로 구현해 보자고 생각했다.→ 인덱스를 하나씩 증가시키면서 현재 문자와 다음 문자가 같으면 제거하고, 앞뒤 문자열을 이어 붙이는 방식!// 첫 번째 시도const isSame = s[currentIndex] === s[currentIndex+1] if (isSame) { con..