본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 3][Python] 11966번 : 2의 제곱인가?

by 빛밤하늘 2021. 6. 27.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

11966번: 2의 제곱인가?

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

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 첫째 줄에 N을 입력합니다.
# 1 <= N <= 2^30
# 정수형으로 변환합니다.
N = int(stdin.readline())

# 지수를 저장하는 변수를 선언합니다.
# 0부터 시작하므로 0으로 초기화합니다.
square = 0
# 계속 반복해봅니다.
while True:
    # N이 2의 제곱수인지 판별하기 위해 비교할 수를 저장하는 변수를 선언합니다.
    # 2에서 square에 저장된 숫자만큼 제곱한 값을 저장합니다.
    compare_num = 2 ** square

    # N과 compare_num이 같다면
    if N == compare_num:
        # N은 2의 제곱수이므로 1을 출력합니다.
        print(1)
        # 판별을 했으므로 반복문을 탈출합니다.
        break
    # N이 compare_num보다 작다면
    elif N < compare_num:
        # N은 2의 제곱수가 아니므로 0을 출력합니다.
        print(0)
        # 판별을 했으므로 반복문을 탈출합니다.
        break
    # N이 compare_num보다 크다면
    elif N > compare_num:
        # square에 1을 더합니다.
        square += 1

결과

 

코드를 짜면서 뭔가 더 쉽게 구현할 수 있는 것 같은데 막연히 떠오르지 않았습니다.

그래서 맞았습니다 결과를 보고 다른 사람들의 파이썬 코드들을 보니

더 짧은 코드로도 쉽게 구현이 가능했던 문제였습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글