백준의 공(1547) 문제이다.
( 문제 바로가기 )
[ 문제풀이 ]
1. 간단한 시뮬레이션 문제이다. 야바위 문제를 코드로 구현하도록 바꿔놓은 것 같은 느낌이다.
초기상태는 3개의 컵 중에서 1번 컵 밑에 공을 넣어두고, 컵의 위치를 바꾸면서 공이 최종적으로 어디에 있는지 출력하면
되는 문제이다.
2. 먼저 나는 공의 위치를 저장하는 int 형 변수를 하나 사용하였다. (int Ball)
초기 상태에 의해서 Ball = 1 이 될 것이다.
그럼 이 상태에서 생각을 해보자.
만약 이 상태에서 2번컵과 3번컵을 바꾼다면 ?? 공의 위치는 변하지가 않을 것이다.
1번컵과 2번컵을 바꾼다면?? 공의 위치는 2번이 될 것이다.
1번컵과 3번컵을 바꾼다면?? 공의 위치는 3번이 될 것이다.
즉, 컵 A와 컵 B의 위치를 바꿀 때,
공이 A번에 있었다면, 공은 B번이 될 것이고,
공이 B번에 있었다면, 공은 A번이 될 것이다.
공이 없는 컵 2개를 바꾸는 경우에는, 아무것도 해주지 않아도 된다는 의미이다.
[ 소스코드 ]
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include<iostream> #include<vector> #define endl "\n" using namespace std; int M, Ball; vector<pair<int, int>> V; void Input() { cin >> M; for (int i = 0; i < M; i++) { int a, b; cin >> a >> b; V.push_back(make_pair(a, b)); } Ball = 1; } void Solution() { for (int i = 0; i < M; i++) { int First = V[i].first; int Second = V[i].second; if (First == Ball) Ball = Second; else if (Second == Ball) Ball = First; } cout << Ball << endl; } void Solve() { Input(); Solution(); } int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); //freopen("Input.txt", "r", stdin); Solve(); return 0; } | cs |
'[ BOJ Code ] > # BOJ -' 카테고리의 다른 글
[ 백준 11048 ] 이동하기 (C++) (1) | 2019.01.12 |
---|---|
[ 백준 2309 ] 일곱 난쟁이 (C++) (0) | 2019.01.11 |
[ 백준 16234 ] 인구이동 (C++) (0) | 2019.01.11 |
[ 백준 1261 ] 알고스팟 (C++) (3) | 2019.01.11 |
[ 백준 1525 ] 퍼즐 (C++) (2) | 2019.01.11 |