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



시뮬레이션 문제는 큐와 같은 자료구조를 같이 사용해서 응용하는 문제는 굉장히 어렵게 느껴지는데 
위의 문제는 문제에 제시된 순서대로 시뮬레이션을 돌리면 되는 문제이다.
문제만 정확히 이해하면 된다.


64라는 처음 길이를 계속해서 잘라나가면서
X라는 길이가 될 수 있도록 붙이면 된다.


만약에 X보다 크다면 버리고 크지 않다면 붙인 막대의 길이에 계속해서 더해주면 된다.
그리고 X라는 길이가 나오면 더한 길이만큼만 붙여주면 된다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
using namespace std;
 
int main(){
    
    int X;
    cin>>X;
    
    int cnt=0//붙인 막대 개수
    int length=0//붙인 막대 길이
    int remain=64//자른 막대 길이
    
    if(X==64){
        cout<<1<<endl;
        return 0;
    }
    
    while(X!=length){
        remain/=2;
        if(remain+length>X)
            continue;
        
        length+=remain;
        cnt++;
    }
    
    cout<<cnt<<endl;
    return 0;
}
cs


'알고리즘(BOJ) > 시뮬레이션' 카테고리의 다른 글

백준 15685번 - 드래곤 커브  (0) 2018.10.14
백준 1057번 - 토너먼트  (0) 2018.04.03
백준 1966번 - 프린터 큐  (0) 2018.01.31
백준 1021번 - 회전하는 큐  (0) 2018.01.28
백준 2455번 - 지능형 기차  (0) 2018.01.28

+ Recent posts