C++

[백준 알고리즘] 11966번 : 2의 제곱인가?, c++

2022. 3. 6. 11:44

https://www.acmicpc.net/problem/11966

 

11966번: 2의 제곱인가?

자연수 N이 주어졌을 때, 2의 제곱수면 1을 아니면 0을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

c++로 백준 11966번 문제를 풀어보겠다.

 

 

 

 

 

문제

자연수 N이 주어졌을 때, 2의 제곱수면 1을 아니면 0을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 N(1 ≤ N ≤ 230)이 주어진다.

출력

N이 2의 제곱수면 1을 아니면 0을 출력하는 프로그램을 작성하시오.

예제 입력 1 복사

1

예제 출력 1 복사

1

 

 

 

 

<문제 풀이>

1. N을 선언한 후 입력받는다.

2. 입력받은 N이 1이라면 '1'을 출력한다.

3. 입력받은 N이 1이 아니라면 while 반복문을 통해 N이 2의 제곱수인지 판별한다.

    - while 반복문 코드 내용 -

      1) N을 2로 나누었을 때 나머지가 0으로 나누어 떨어지지 않는다면, '0'을 출력하고 반복문을 종료한다.

      2) N을 2로 나누었을 때 나머지가 0으로 나누어 떨어진다면, N을 2로 나눈 몫을 다시 N에 저장한다.

      3) 만약 위의 계산이 끝난 후 N이 1이 되었다면 '1'을 출력하고 반복문을 종료한다.

      N을 2로 나누었을 때 0으로 나누어 떨어졌을 경우(2번째 줄의 경우) while문을 계속 반복한다.

      (1 또는 3의 경우가 나와 반복문이 종료될 때까지 반복함.)

 

 

 

코드는 다음과 같다.