-
백준 1547번 : 공 (C 언어)c c++ 언어 공부 2023. 9. 1. 10:52
Code:
123456789101112131415161718192021222324252627282930313233#include <stdio.h>int main() {int m;scanf("%d", &m);int arr[4] = { 0, };arr[1] = 1;arr[2] = 0;arr[3] = 0;int first, second;int cnt = 0;int flag = 0;while (m--){scanf("%d %d", &first, &second);cnt = arr[first];arr[first] = arr[second];arr[second] = cnt;}for (int i = 1; i <= 3; i++){if (arr[i] == 1){printf("%d", i);flag = 1;break;}}if (flag == 0){printf("-1");}}cs 문제 설명: 이 문제는 세준이가 컵 위치를 바꾸는 게임을 하고, 컵 위치 바뀌는 과정을 입력으로 받아 공이 어떤 컵 아래에 있는지 찾는 문제입니다. 게임은 컵의 위치를 바꾸는 횟수 M번 주어지고, 각 바꾸는 방법은 X번 컵과 Y번 컵의 위치를 서로 바꾸는 것을 나타냅니다. 초기 상태에서 1번 컵 아래에는 공이 하나 들어가 있습니다. 공은 컵 위치 바뀔 때마다 그 위치를 따라갑니다.
코드 설명:
- 변수 초기화:
- arr[4] 배열은 각 컵의 상태를 나타내며, arr[1]은 1번 컵, arr[2]는 2번 컵, arr[3]은 3번 컵의 상태를 나타냅니다.
- 초기에는 1번 컵에 공이 있으므로 arr[1]을 1로 설정하고, 다른 컵은 공이 없으므로 0으로 설정합니다.
- 컵 위치 바꾸기 반복문:
- while (m--) 루프를 통해 입력으로 주어진 컵 위치 바꾸는 방법을 처리합니다.
- first와 second 변수를 사용하여 X번 컵과 Y번 컵을 선택하고, 이 두 컵의 위치를 서로 바꿉니다.
- 공은 움직이지 않으므로 cnt 변수를 사용하여 위치를 바꿀 때 공의 위치도 바꿔줍니다.
- 공의 최종 위치 확인:
- 반복문을 통해 arr 배열을 검사하여 공이 있는 컵을 찾습니다.
- 공이 있는 컵을 찾으면 해당 컵 번호를 출력하고 flag를 1로 설정하여 찾았음을 표시합니다.
- 결과 출력:
- flag 변수를 검사하여 공이 없는 경우에는 -1을 출력합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 1526번 : 가장 큰 금민수 (C 언어) (0) 2023.09.04 백준 1264번 : 모음의 개수 (C 언어) (0) 2023.09.01 백준 : 20291번 (C 언어) (0) 2023.08.31 백준 16931번 : 겉넓이 구하기 (C 언어) (0) 2023.08.30 백준 5635번 : 생일 (C 언어) (0) 2023.08.30 - 변수 초기화: