프로그래밍 공부
BOJ/백준 1547번 공 본문
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을 출력한다." 이런 조건이 있는데 무시하고 풀어도 정답을 받았습니다.
'Problem Solving > Baekjoon Online Judge' 카테고리의 다른 글
| BOJ/백준 1654 랜선 자르기 (0) | 2021.06.29 |
|---|---|
| BOJ/백준 4153 직각삼각형 (0) | 2021.06.29 |
| BOJ/백준 2667번 단지번호붙이기 (0) | 2021.06.24 |
| BOJ/백준 1786번 찾기 (0) | 2021.06.10 |
| BOJ/백준 17496번 스타후르츠 (0) | 2021.04.11 |
Comments