PS/Baekjoon Online Judge

[백준 2164] 카드2 [C]

kimyoungrok 2021. 7. 13. 22:37
728x90

백준 - 2164


풀이

본래 Queue를 이용해 푸는 문제지만, 다음과 같은 규칙성이 존재해 간단하게 풀이했다.

  • N이 1일때, 결과가 1이다.
  • N >= 2 일때, N에서 N보다 작은 2의 제곱을 뺀 값에 2를 곱해준 값이 결과와 일치한다.

1부터 100까지 N에 따른 결과

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);
}

출처

 

2164번: 카드2

N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가

www.acmicpc.net

 

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