백준 14467 소가 길을 건너간 이유(구현)

제목이 귀여워서 풀게 된 문제이다..
구현이며, 해당 소의 번호와 이동을 나눠서 저장해주면 된다. 이동이 전과 다르다면 sum++를 해주는 방식이다.

시간제한이 2초, 512mb이므로 2차원 리스트를 사용했다.(번호를 출력하지는 않아도 되기때문에 1차원 배열로 이동만 저장해도 될 것 같다. 하지만 2차원 리스트 연습을 위해서 이렇게 풀었당..)

0번 or 1번만 이동한 소들은 제외시켜야 한다.

import java.util.*;

public class Main {
    static ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();

    public static void main (String[]args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int sum = 0;

        for(int i=0; i<101; i++){
            list.add(new ArrayList<Integer>());
        }

        for(int i=0; i<n; i++){
            int num = scanner.nextInt();
            int dir = scanner.nextInt();

            list.get(num).add(dir);
        }

        for(int i=0; i<101; i++){
            if(!(list.get(i).size() <= 1)){     //해당 인덱스가 1이면 돌아오지 않음.
                int k = list.get(i).get(0);
                for(int j=1; j<list.get(i).size(); j++){
                    if(k != list.get(i).get(j)){
                        k = list.get(i).get(j);
                        sum++;
                    }
                }
            }
        }

        System.out.print(sum);
    }
}

좋은 웹페이지 즐겨찾기