-
[프로그래머스] 방금그곡 (2018 KAKAO BLIND RECRUITMENT)ALGORITHM/PROGRAMMERS 2021. 2. 11. 12:55
programmers.co.kr/learn/courses/30/lessons/17683
2021-02-11
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263import java.util.ArrayList;public class Solution17683 {public static String solution(String m, String[] musicinfos) {String answer = "";int prevTime = 0;ArrayList<String> music = new ArrayList<>();int index = 0;for(int k = 0; k < m.length(); k++) {char ch = m.charAt(k);if(ch == '#') {music.set(index-1, music.get(index-1)+ch);} else {music.add(String.valueOf(ch));index++;}}for(int i = 0; i < musicinfos.length; i++) {String info[] = musicinfos[i].split(",");int time = (Integer.parseInt(info[1].split(":")[0])*60 + Integer.parseInt(info[1].split(":")[1]))- (Integer.parseInt(info[0].split(":")[0])*60 + Integer.parseInt(info[0].split(":")[1]));ArrayList<String> list = new ArrayList<>();int idx = 0;for(int k = 0; k < info[3].length(); k++) {char ch = info[3].charAt(k);if(ch == '#') {list.set(idx-1, list.get(idx-1)+ch);} else {list.add(String.valueOf(ch));idx++;}}for(int k = 0; k <= time - music.size(); k++) {int tmp = k;boolean flag = false;for(int j = 0; j < music.size(); j++) {if(list.get(tmp++%list.size()).equals(music.get(j))) continue;else{flag = true;break;}}if(!flag) {if(prevTime < time) {prevTime = time;answer = info[2];}}}}if(("").equals(answer)) return "(None)";return answer;}public static void main(String[] args) {String m = "ABC";String mu[] = {"12:00,12:14,HELLO,C#DEFGAB", "13:00,13:05,WORLD,ABCDEF"};System.out.println(solution(m, mu));}}cs #문제풀이
1. m과 musicinfo의 음을 끊어서 각각 music과 list에 넣었다.
2. 두 개의 list들을 한 칸씩 비교하면서 맞는 것이 있는지 찾았다.
3. prevTime을 주어서, 여러개의 음악이 있는 경우 라디오 길이를 이용하여 비교하였다. 길이가 같은 경우 먼저 들어온 음악을 출력하라는 조건도 있는데, 어차피 순서대로 체크해서 신경쓰지 않았다.
깔끔한 방법은 아닌 것 같다..
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] 기둥과 보 설치 (2020 KAKAO BLIND RECRUITMENT) (0) 2021.02.11 [프로그래머스] n진수 게임 (2018 KAKAO BLIND RECRUITMENT) (0) 2021.02.11 [프로그래머스] 파일명 정렬 (2018 KAKAO BLIND RECRUITMENT) (0) 2021.02.09 [프로그래머스] 메뉴 리뉴얼 (2021 KAKAO BLIND RECRUITMENT) (0) 2021.02.04 [프로그래머스] 합승 택시 요금 (2021 KAKAO BLIND RECRUITMENT) (0) 2021.01.31