반응형

이문제는 카카오톡의 들어오고 나가고에 대한 배열을 출력하는 문제인데,

조건으로 아이디에 따라 별명이 바뀌면 바뀐 최종별명으로 출력을 해주어야 한다...

 

따라서 해시맵을 사용해서 키와 값으로 아이디와 별명을 저장한 후 

아이디를 이용해서 값을 꺼내온 후 들어오고 나간것에 대해 배열에 저장해주었다...

 

테스트에선 통과했는데,

제출 후 채점하기를 하면 모두 런타임 에러가 난다.............무슨일이지 진짜 ㅠ.ㅠ 더도전...

import java.util.*;

class Solution {
    HashMap<String, String> hm = new HashMap<String, String>();
    int count = 0;

    public String[] solution(String[] record) {
              
        for(int i=0; i<record.length; i++){
            if(record[i].startsWith("Enter")){
                //들어온 값으로 우선 저장
                hm.put(record[i].substring(6,record[i].lastIndexOf(' ')), record[i].substring(record[i].lastIndexOf(' ')+1, record[i].length()));
                
            }
            if(record[i].startsWith("Change")){
                //바뀐값으로 다시 저장
                hm.put(record[i].substring(7,record[i].lastIndexOf(' ')), record[i].substring(record[i].lastIndexOf(' ')+1, record[i].length()));
                count ++;
            }
        }
        
        String[] answer = new String[record.length-count];
        for(int i=0; i<record.length; i++){
            String back = talk(record[i]);
            if(back.equals("0")){
                continue;
            }else{
                answer[i] = back;
            }
        }
        return answer;
    }
    
    public String talk(String str){
        if(str.startsWith("Enter")){
            String id = hm.get(str.substring(6, str.lastIndexOf(' ')));
            return id+"님이 들어왔습니다.";
        }
        else if(str.startsWith("Change")){
            return "0";
        }else{
            String id = hm.get(str.substring(6, str.length()));
            return id+"님이 나갔습니다.";
        }
    }
}
반응형

'알고리즘 > 알고리즘(java,프로그래머스1,2단계위주)' 카테고리의 다른 글

소수만들기  (0) 2021.09.19
키패드 누르기  (0) 2021.09.17
숫자 문자열과 영단어  (0) 2021.09.17
문자열 압축  (0) 2021.09.17
신규 아이디 추천  (0) 2021.09.17

+ Recent posts