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



문제에 대한 설명이 애매해서 처음에 접근하는데 조금 시간이 걸렸다.

컵의 위치가 변경이 될때 그냥 독립적으로 움직이는건지, 아니면 위에 포개진 상태로 움직이는지 등에 대해 생각을했다.


정답률이 70프로가 넘는 것을 보고 간단하게 컵만 움직이고

공은 처음 위치에서 변경이 안된다고 가정하고 풀어서 패스했다.


어차피 공이 빠질일이 없는데 공이 사라져서 컵 밑에 없는 경우가 없기 때문에 -1을 출력할 일은 없다. (왜 이 설명이 있는지는 잘 모르겠다)

location 변수를 통해 i번째 컵이 처음 설정한 1,2,3 컵의 위치를 기준으로 몇 번째에 위치해 있는지 저장했다.


마지막으로 정답을 출력할 때에는

i번째 컵이 처음 1번 위치해 있을 때 정답인 컵 번호(i)를 출력할 수 있도록 했다.



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 location[4]={0,1,2,3};
 
void swap(int x, int y){
    int temp=location[x];
    location[x]=location[y];
    location[y]=temp;
    return;
}
int main(){
    
    int M;
    cin>>M;
    
    for(int i=0;i<M;i++){
        int x,y;
        scanf("%d %d",&x,&y);
        swap(x,y);
    }
    
    for(int i=1;i<=3;i++){
        if(location[i]==1)
            cout<<i<<endl;
    }
    return 0;
}
 
cs


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

백준 2798번 - 블랙잭  (0) 2019.04.28
백준 17135번 - 캐슬 디펜스  (0) 2019.04.20
백준 15685번 - 드래곤 커브  (0) 2018.10.14
백준 1057번 - 토너먼트  (0) 2018.04.03
백준 1966번 - 프린터 큐  (0) 2018.01.31

+ Recent posts