백준 2164번

김경욱·2025년 8월 29일

백준

목록 보기
71/121

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.*;

import static java.util.Collections.*;

public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    int N = Integer.parseInt(br.readLine());




    int L = 1;

   while(L*2 <= N)
   {
       L *= 2;
   }

   if (L == N)
   {
       System.out.println(N);
       return;
   }

   int M = N - L;
    System.out.println(2*M);















    /*
    1 -> 1
    2 -> 2
    3 -> 2     2
    4 -> 4     2 4 //짝수일땐 앞에거 버리고 시작
    5 -> 2     2 4 //홀수일땐 앞에거 아래로 내리고 시작
    6 -> 4     2 4 6
    7 -> 6     2 4 6
    8 -> 8     2 4 6 8
    9 -> 2     2 4 6 8
    10 -> 4    2 4 6 8 10
    11 -> 4    2 4 6 8 10
    12 -> 8    2 4 6 8 10 12
    13 -> 10   2 4 6 8 10 12
    14 -> 12   2 4 6 8 10 12 14
    15 -> 14   2 4 6 8 10 12 14
    16 -> 16   2 4 6 8 10 12 14 16

    2의 제곱수는 2의 제곱수가 나온다.
      */





}

}

여기서 2의 제곱수가 아닌 값은 N과 가장 인접한 2의 제곱수 빼기 곱하기 2이다.

0개의 댓글