컴굥일지

[BOJ/백준 1547][C++] 공 본문

알고리즘/코테 문제

[BOJ/백준 1547][C++] 공

gyong 2021. 7. 11. 22:01
반응형

백준 1547 공

 

문제 링크

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

 

1547번: 공

첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 것

www.acmicpc.net

 

문제 내용

컵 1,2,3이 있고, 공의 위치는 초기 1번 컵의 위치이다. 입력받은 숫자는 컵의 "번호" 이므로, 해당 번호의 컵을 찾아 위치를 바꿔주면 된다.

 

코드

#include <iostream>
using namespace std;

int main() {
	ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

	int m; cin >> m;
	int arr[4] = {0,1,2,3};  //인덱스는 컵의 번호, 배열의 원소는 컵의 위치
	
	for (int i = 0; i < m; i++) {
		int first, second;
		cin >> first >> second;
		swap(arr[first], arr[second]); //인덱스(컵의 번호)의 값(위치)를 바꿔준다
		
	}

	int i = 1;
	while (true) {
		if (arr[i] == 1) { //컵의 위치가 1인 컵이 공이 들어있는 컵이다.
			cout << i << '\n';
			break;
		}
		i++;
	}
	
	return 0;
}

 

느낀점

맨 처음에는 인덱스를 컵의 위치, 값을 컵의 번호로 두고 풀었었는데, 그러면 입력받아서 처리하는 과정에 조건문을 여러번 쓰게 되어서 바꾸어 풀었다. 풀이를 생각하는 것이 힘들었다.

반응형
Comments