본문 바로가기
문제풀이/프로그래머스

[JAVA] 프로그래머스 - 오픈채팅방 (시간복잡도 빅오 O(n))

by 그적 2022. 3. 30.

(문제 설명)

 

(제한사항)

 

(코드)

빅오 O(n)으로 만들어 작성했고, 중요한 부분은 첫 번째 for문에서의 count 쓰임과 두 번째 for문에서 count 쓰임이 다르다는 것만 신경 써서 보면 될 것 같다.

import java.util.*;

class Solution {
    public String[] solution(String[] record) {
        
        /* 유저아이디, 닉네임 */
        Map<String, String> map = new HashMap<>();
        
        int count = 0;
        for(int i=0; i<record.length; i++){
            String[] col = record[i].split(" ");
            if(col.length >= 3){
                map.put(col[1], col[2]);
                
                if("Change".equals(col[0])){
                    count++;
                }
            }
        }
        
        String result[] = new String[record.length - count];
        
        count = 0;
        for(int i=0; i<record.length; i++){
            String[] col = record[i].split(" ");
            String nickname = map.get(col[1]);
            
            if("Enter".equals(col[0])){
                result[count] = nickname+"님이 들어왔습니다.";
                count++;
            }
            else if("Leave".equals(col[0])){
                result[count] = nickname+"님이 나갔습니다.";
                count++;
            }
        }
        
        
        return result;
    }    
}

 

댓글