백준 14467번 : 소가 길을 건너간 이유 1 | 자바 풀이

박지윤·2022년 7월 11일
0

Algorithm_Implementation

목록 보기
2/16

[ Solution ]

import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        int[][] arr = new int[11][1];
        int cow_sum = 0;

        for(int i = 1; i < 11; i++) {
            arr[i][0] = -1;
        }

        StringTokenizer st;
        for(int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());

            if(arr[a][0] == -1) {
                arr[a][0] = b;
            }
            else {
                if(arr[a][0] != b) {
                    cow_sum++;
                    arr[a][0] = b;
                }
            }
        }

        System.out.println(cow_sum);
    }
}

이 문제는 실버지만 높지 않았던 난이도!
소의 번호에 해당하는 배열 인덱스의 값이 변하는 횟수만 체크해주면 된다.

2차원 배열에서 첫번째 열은 소의 번호이고, 두번째 열은 소의 위치를 나타내는데, 우선 소의 위치는 모두 -1로 초기화 해준다.
이후에 소의 관찰 횟수 만큼 소의 위치를 입력 받을 때, 한 번도 위치를 입력 받지 않았다면 그대로 넣어주고, 아니라면 현재 입력하고자 하는 값과 배열에 입력되어 있는 값을 비교하여 다르면 cow_sum(소가 길을 건너간 횟수를 나타내는 변수)을 1 증가시키고 배열의 값을 갱신시켜 준다.

0개의 댓글