-
[알고리즘] 프로그래머스 오픈채팅방 Java(자바)코딩/알고리즘 2022. 1. 5. 23:51
- 문제
https://programmers.co.kr/learn/courses/30/lessons/42888
코딩테스트 연습 - 오픈채팅방
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오
programmers.co.kr
- 코드 설명
record의 최대 길이가 100000(10만)이나 되기때문에 하나하나 다시 바꾸는것은 시간이 많이 걸린다고 생각하여 해시맵을 사용해야 된다고 생각했습니다.
Enter와 Leave일 경우만 answer에 표시되기 때문에 해당 메세지의 상태(Enter or Leave) 와 uid 만 result에 넣어줍니다.
HashMap<uid, username> 이라고 생각하고 Enter와 Change일때만 넣어줍니다.
마지막엔 answer의 크기인 result에 크기만큼 배열을 지정해주고
while문을 통해 정답을 추출합니다.
import java.util.*; class Solution { public String[] solution(String[] record) { String[] answer = {}; HashMap<String,String> user = new HashMap<>(); Queue<Result> result = new LinkedList<>(); for(String msg : record){ String []str = msg.split(" "); if(str[0].equals("Enter")){ user.put(str[1],str[2]); result.offer(new Result(str[0],str[1])); }else if(str[0].equals("Leave")){ result.offer(new Result(str[0],str[1])); } else{ user.put(str[1],str[2]); } } answer = new String[result.size()]; for(int i=0; !result.isEmpty() ; i++){ Result rs = result.poll(); if(rs.state.equals("Enter")) answer[i] = new String(user.get(rs.uid) +"님이 들어왔습니다."); else answer[i] = new String(user.get(rs.uid) +"님이 나갔습니다."); } return answer; } } class Result{ String uid; String state; public Result(String state, String uid){ this.uid = uid; this.state = state; } }
- 결과
'코딩 > 알고리즘' 카테고리의 다른 글
[알고리즘] 프로그래머스 단체사진 찍기 Java(자바) (1) 2022.01.07 [알고리즘] 프로그래머스 카카오프렌즈 컬러링북 Java(자바) (1) 2022.01.06 [알고리즘] 프로그래머스 문자열 압축 Java(자바) (0) 2022.01.04 [알고리즘] 프로그래머스 신규아이디 추천 Java(자바) (0) 2022.01.03 [알고리즘] 프로그래머스 점프와 순간이동 Java(자바) (0) 2022.01.02