본문 바로가기

알고리즘 (2020 : 08 : 10 ~ )/구현, 시뮬

[백준 / BOJ] 12791 Starman

문제

출처 : https://www.acmicpc.net/problem/12791

 

12791번: Starman

첫 번째 줄에 질의의 수 정수 Q(Q ≤ 100)가 주어진다. 이후 Q개의 줄에 질의 S, E(1 ≤ S ≤ E ≤ 2016)가 정수로 주어진다.

www.acmicpc.net

 

쿼리의 수 Q와, 각 쿼리마다 S년(1월 1일) E년(12월 31일) 이 주어진다.

S년 부터 E년까지 발매된, 전설적인 락 스타 David Bowie의 앨범을 출력하는 문제다.

 


풀이

구현 문제였다.

문제에서 주어진 앨범을 2차원 ArrayList에 집어넣고, 출력하는 방식으로 풀었다.

 

예를들어, David Bowie가 1973년에 AladdinSane 과 PinUps를 발매했으니, 2차원 배열에는 다음과 같이 저장한다.

ArrayList.get(1973).add("AladdinSane");

ArrayList.get(1973).add("PinUps");

 

그후, 입력받은 S부터 E까지 순회하며, 배열이 비어있다면 출력하지않고, 비어있지않다면 출력해주면됨.

 

주요 소스코드

    public void run() throws Exception{
        initial();
        int Q = Integer.parseInt(br.readLine());
        for(int i = 0; i < Q; i++){
            String[] read = br.readLine().split(" ");
            int from = Integer.parseInt(read[0]);
            int to = Integer.parseInt(read[1]);
            String answerString = "";
            int answerInt = 0;
            for(int year = from; year <= to; year++){
                for(int song = 0; song < album.get(year).size(); song++){
                    answerInt++;
                    answerString += year + " " + album.get(year).get(song) + "\n";
                }
            }
            System.out.println(answerInt);
            System.out.print(answerString);
        }
    }

전체 소스코드

https://github.com/devxb/JJUNalgo/blob/master/BOJ%20source%20code/12791%20Starman/Main.java

 

devxb/JJUNalgo

백준 알고리즘 소스코드🙃. Contribute to devxb/JJUNalgo development by creating an account on GitHub.

github.com