Two Pointer(3)
-
[Programmers] Lv3. [카카오 인턴] 보석 쇼핑 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🧑💻풀이 과정 문제를 보자마자 양 쪽에 인덱스를 가리키는 변수 2개를 두고 구간을 줄여가며 구해야겠다고 생각했는데, 이게 투 포인터(Two pointer) 알고리즘이더군요. 몰랐지만 자연스럽게 사용하게 되었습니다..? 풀이 방식은 다음과 같습니다. gems 배열을 순회하며 보석의 종류 개수를 알아낸다. 시작 인덱스(start)와 끝 인덱스(end) 변수를 각각 0으로 두고, 보석의 종류 개수를 다 포함하는 구간이 될 때까지 end를 증가시킨다. 보석의 종류를 모두 포함하는 가장 작은 구간까지..
2023.10.22 -
[Programmers] Lv2. 연속된 부분 수열의 합 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 입력 데이터 크기가 1,000,000개이니 당연히 \( O(n^2) \)으로는 못 풉니다. 즉, 이중 반복문으로는 어렵겠다고 생각하였습니다. 그래서 저는 두 개의 인덱스 변수를 통해, 반복문을 한 번만 돌도록 풀이를 구상하였습니다. 시작 인덱스(startIdx), 끝 인덱스(lastIdx), 합계 변수(sum)를 모두 0으로 초기화하여 선언합니다. startIdx = k라면, sum -= sequnece[startIdx++] 위와 같이 조건문들을 지정하여 반복해줍니다. 반복문이..
2023.06.27 -
[Programmers] Lv2. 구명보트 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 문제를 잘 읽어야 합니다. 보트에 탈 수 있는 사람은 단 두 명입니다. 1. 사람들의 무게를 오름차순으로 정렬 2. 가장 작은 무게를 지닌 사람의 인덱스(li = 0)와 가장 무거운 무게를 지닌 사람의 인덱스(hi = people.size() - 1)를 지정 3. people[li] + people[hi] > limit 이라면, 제일 무거운 사람 혼자 밖에 탈 수 없으므로 answer++, hi-- 4. people[li] + people[hi] hi가 될 때까지 3, 4번을 ..
2023.06.13