로딩
요청 처리 중입니다...

JAVA_LeetCode 390_Elimination Game

 JAVA_LeetCode 390_Elimination Game

JAVA_LeetCode 390_Elimination Game 풀이 class Solution { public int lastRemaining(int n) { int start = 1, gap = 1; // 현재 남아 있는 숫자의 시작값, 간격(매 라운드 2배 증가) boolean arrow = true; // 제거 방향 while(n > 1){ // start가 앞으로 이동해야 하는 경우 // 왼 → 오 제거는 항상 start가 사라진다 → 시작점 무조건 이동 // 오 → 왼 제거는 남은 개수가 홀수일 때만 시작점이 사라짐 // 비트 연산(&)으로 짝/홀수 판별 if(arrow || (n & 1) == 1) start += gap; // 다음 라운드 준비 n >>= 1; // 절반 제거 gap <<= 1; // 간격 두 배 arrow = !arrow; // 방향 반전 } return start; } } 시작점을 추적한 풀이법, 진행 시 항목수가 절반씩 줄어드는 패턴, 비트 연산자 ...