ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 1547번 : 공 (C 언어)
    c c++ 언어 공부 2023. 9. 1. 10:52

    Code:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #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번 컵 아래에는 공이 하나 들어가 있습니다. 공은 컵 위치 바뀔 때마다 그 위치를 따라갑니다.

    코드 설명:

    1. 변수 초기화:
      • arr[4] 배열은 각 컵의 상태를 나타내며, arr[1]은 1번 컵, arr[2]는 2번 컵, arr[3]은 3번 컵의 상태를 나타냅니다.
      • 초기에는 1번 컵에 공이 있으므로 arr[1]을 1로 설정하고, 다른 컵은 공이 없으므로 0으로 설정합니다.
    2. 컵 위치 바꾸기 반복문:
      • while (m--) 루프를 통해 입력으로 주어진 컵 위치 바꾸는 방법을 처리합니다.
      • first와 second 변수를 사용하여 X번 컵과 Y번 컵을 선택하고, 이 두 컵의 위치를 서로 바꿉니다.
      • 공은 움직이지 않으므로 cnt 변수를 사용하여 위치를 바꿀 때 공의 위치도 바꿔줍니다.
    3. 공의 최종 위치 확인:
      • 반복문을 통해 arr 배열을 검사하여 공이 있는 컵을 찾습니다.
      • 공이 있는 컵을 찾으면 해당 컵 번호를 출력하고 flag를 1로 설정하여 찾았음을 표시합니다.
    4. 결과 출력:
      • flag 변수를 검사하여 공이 없는 경우에는 -1을 출력합니다.

Designed by Tistory.