www.acmicpc.net/problem/2164

 

2164번: 카드2

N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리

www.acmicpc.net

1. 짝수일 경우에는 2 4 6 그대로 남기 때문에 n / 2의 결과에서 2배만을 곱해주면 된다.

2. 홀수일 경우에는 4 6 2 / 4 6 8 2 / 4 6 8 10 2 등과 같이 2가 맨 끝으로 가기 때문에, n/2 의 결과에 2배를 곱해주고 2를 더한 값이 만약 맨 끝이

라면 2를 넘겨주고 아닐 경우 그대로 넘겨준다.

[Points]

1. 자료구조를 사용해야 할 것 같았는데 생각보다 간단(?)한 규칙에 의해 풀린다.

[More]

1. 다른 분들 중에도 신선한 아이디어가 많아 보인다 잘 이해해보자

'PS > BOJ' 카테고리의 다른 글

[백준] 1302.py : 베스트셀러  (0) 2020.05.10
[백준] 10816.cpp.py : 숫자 카드 2  (0) 2020.05.10
[백준] 1920.cpp : 수 찾기  (0) 2020.05.10
[백준] 11650.cpp : 좌표 정렬하기  (0) 2020.05.10
[백준] 10814.cpp : 나이순 정렬  (0) 2020.05.10

+ Recent posts