JAVA_LeetCode 397_Integer Replacement 풀이 class Solution { public int integerReplacement(int n) { // 끝자리 01일땐 -1, 11일땐 +1을 해주기 long num = n; // 범위 초과 방지 int steps = 0; while(num != 1){ if((num & 1) == 0) num >>= 1; // 짝수 → 나누기 2 else{ if(num == 3 || (num & 3) == 1) num--; // 01 패턴 or 3 → -1이 최적 else num++; // 11 패턴 → +1이 최적 } steps++; } return steps; } } 비트 연산, greedy 방식 하위 비트로 계산해서 뒷 자리가 01인경우 -1을 11인경우 +1을 하여 뒷자리가 00으로 끝나도록 적용한다. 3은 -1 이후 연산이 +1 이후 연산보다 최소 연산을 충족한다. * 출처 https://leetcode.com/pr...