https://www.acmicpc.net/problem/1547
코드
#include <stdio.h>
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int findIndex(int a, int arr[])
{
for (int i = 0; i < 3; i++) if (a == arr[i]) return i;
return -1;
}
int main()
{
int m, arr[3] = {1,2,3};
int a, b;
scanf("%d", &m);
for (int i = 0; i < m; i++)
{
scanf("%d %d", &a, &b);
swap(&arr[findIndex(a, arr)], &arr[findIndex(b,arr)]);
}
printf("%d", arr[0]);
return 0;
}
코드 설명
메인 함수
반복문을 돌면서 계속 입력된 대로 컵을 이동시킨 후 배열의 0번째 인덱스에 저장된 값을 출력한다. (공의 위치는 변경되지 않으므로 가장 먼저 1번 컵의 아래에 공을 넣은 뒤 계속 그 자리에 있다.)
swap함수
두 값을 서로 바꾼다.
findIndex함수
컵에 붙은 이름 (1번 컵, 2번 컵, 3번 컵)은 변경되지 않으므로 인수로 컵의 이름과 배열을 받는다. 반복문을 돌면서 컵의 이름과 배열의 값이 같을 때 그 값이 저장된 인덱스를 반환한다.
느낀 점
공의 위치는 변하지 않으므로 0번째 인덱스의 값을 출력하면 된다. 예제를 직접 적어서 어떻게 진행되는지 확인한 후 코드를 금방 작성할 수 있었다.
'PS (C, C++)' 카테고리의 다른 글
[백준/C & C++] 1225 이상한 곱셈 (0) | 2022.08.24 |
---|---|
[백준/C] 1718 암호 (0) | 2022.08.24 |
[백준/C] 1076 저항 (0) | 2022.08.22 |
[백준/C] 1085 직사각형에서 탈출 (0) | 2022.08.22 |
[백준/C] 1598 꼬리를 무는 숫자 나열 (0) | 2022.08.22 |