프로그래밍 공부

BOJ/백준 1547번 공 본문

Problem Solving/Baekjoon Online Judge

BOJ/백준 1547번 공

khj1999 2021. 6. 28. 23:04

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

 

1547번: 공

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

www.acmicpc.net

언어 : C++14

환경 : Visual Studio 2019

 

간단한 구현 문제입니다.

배열의 인덱스를 컵의 위치, 값을 컵의 번호로 생각하고 풀었습니다.

아이디어는 x, y를 입력받고 그 값을 이용해서 바꿔줘야 할 컵의 위치를 구한 후 서로 바꿔주었습니다.
이때 공은 움직이지 않는다는 말이 있는데 그 말은 계산이 끝난 후 0번 인덱스를 출력하면 된다고 판단했습니다.

 

코드

#include <iostream>
using namespace std;

void swap(int *x, int *y) {
	int tmp; tmp = *x; *x = *y; *y = tmp;
}

int return_index(int* arr, int n) {
	for (int i = 0; i < 3; i++) {
		if (arr[i] == n) {
			return i;
		}
	}
}

int main() {
	int arr[3] = { 1, 2, 3 };
	int t;
	cin >> t;
	for (int i = 0; i < t; i++) {
		int x, y;
		cin >> x >> y;
		x = return_index(arr, x); y = return_index(arr, y);
		swap(arr[x], arr[y]);
	}
	cout << arr[0];
}

결과

참고로 "공이 사라져서 컵 밑에 없는 경우에는 -1을 출력한다." 이런 조건이 있는데 무시하고 풀어도 정답을 받았습니다.

 

Comments