728x90
반응형

twopointer 기법 2

코딩테스트 : 보석 쇼핑

문제 설명해당 문제는 진열대에 나열된 보석들 중 모든 종류의 보석을 하나 이상 포함하는 가장 짧은 구간을 찾는 문제이다.예를 들어 보석 종류가 4개라면 이 4가지 종류를 모두 포함하는 가장 짧은 구간의 시작과 끝 인덱스를 반환해야 한다. 핵심 방법슬라이딩 윈도우 + 해시맵(map) 을 사용하여 현재 구간 내 보석의 종류를 세고,모든 종류가 포함되었을 때 왼쪽 포인터를 줄이며 최소 구간을 갱신하는 방식이다. 슬라이딩 윈도우(Sliding Window) 기법은 배열이나 리스트에서 일정한 구간(윈도우)을 유지하며 왼쪽, 오른쪽 포인터를 이동시키는 방식으로 문제를 푸는 알고리즘 기법이다. Two Pointer 기법과 비슷하며 두 포인터의 구간을 검색하고 진행 방향이 같다는 것이 핵심이다. Two Pointer ..

코딩테스트 : 숫자 게임

문제 설명해당 문제는 A팀의 출전 순서가 고정된 상태에서, B팀이 출전 순서를 전략적으로 조절해 최대 승점을 얻는 문제이다. 핵심 방법 A팀을 내림차순 정렬, B팀을 오름차순 정렬한다. B팀은 자신보다 가장 작은 A팀원을 이기거나, 이길 수 없다면 가장 센 A팀원에게 져주는 전략을 취한다. 양쪽 포인터(frontPoint, backPoint)를 이용해 A팀의 가장 약한 선수와 가장 강한 선수를 판단하고, 이에 따라 B팀 선수를 배치한다. TwoPointer 기법에 대한 설명은 아래 링크에 정리해두었다. Two Pointer 기법1차원 배열에서 각자 다른 원소를 가리키는 2개의 포인터를 사용하여 목표값을 구하기 위한 기법완전탐색 O(n^2)보다 효율적인 O(n)으로 동작정렬된 배열에서 효율적으로 동작한다...

728x90
반응형