728x90
풀이
본래 Queue를 이용해 푸는 문제지만, 다음과 같은 규칙성이 존재해 간단하게 풀이했다.
- N이 1일때, 결과가 1이다.
- N >= 2 일때, N에서 N보다 작은 2의 제곱을 뺀 값에 2를 곱해준 값이 결과와 일치한다.
65~128까지의 N은 N보다 작은 2의 배수인 64를 뺀 값에 2배를 곱하여 출력할 것이다.
129 ~ 256의 N또한 마찬가지로 N보다 작은 2의 배수인 128를 뺀 값에 2배를 곱하여 출력할 것이다.
소스코드
#include <stdio.h>
int main(){
int N, sq = 1;
scanf("%d", &N);
for (; sq <= N; sq *= 2);
sq /= 2;
printf("%d", sq == N ? sq : (N-sq)*2);
}
출처
728x90
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 10950] A+B - 3 [C] (0) | 2021.07.13 |
---|---|
[백준 10869] 사칙연산 [C] (0) | 2021.07.13 |
[백준 10814] 나이순 정렬 [C] (0) | 2021.07.13 |
[백준 10818] 최소, 최대 [C] (0) | 2021.07.13 |
[백준 10809] 알파벳 찾기 [C] (0) | 2021.07.13 |