[프로그래머스] 오픈채팅방
2020. 4. 2. 15:27ㆍ프로그래머스/카카오
import java.util.*;
class Solution {
class User{
String uid;
String nickname;
User(String uid, String nickname){
this.uid = uid;
this.nickname = nickname;
}
}
public String[] solution(String[] record) {
String[] answer = {};
int answersize = 0;
List<User> list = new ArrayList<>();
for(int i=0; i<record.length; i++){
String[] spr = splitRecord(record[i]);
if(spr[0].equals("Enter") || spr[0].equals("Change")){
if(spr[0].equals("Enter")){
answersize++;
}
for(int j=0; j<list.size(); j++){
if(list.size()==0){
list.add(new User(spr[1],spr[2]));
break;
}
if(list.get(j).uid.equals(spr[1])){
list.get(j).nickname = spr[2];
break;
}
if(j==list.size()-1 && !list.get(j).uid.equals(spr[1])){
list.add(new User(spr[1],spr[2]));
break;
}
}
}else{
answersize++;
}
}
answer = new String[answersize];
for(int i=0; i<list.size(); i++){
System.out.println(list.size());
}
for(int i=0; i<record.length; i++){
String[] spr = splitRecord(record[i]);
if(spr[0].equals("Enter")){
String temp = "";
for(int j=0; j<list.size(); j++){
if(list.get(j).uid.equals(spr[1])){
temp += list.get(j).nickname;
break;
}
}
answer[i] = temp+"님이 들어왔습니다.";
}else if(spr[1].equals("Leave")){
String temp = "";
for(int j=0; j<list.size(); j++){
if(list.get(j).uid.equals(spr[1])){
temp = list.get(j).nickname;
break;
}
}
answer[i] = temp+"님이 나갔습니다.";
}else{
continue;
}
}
return answer;
}
public String[] splitRecord(String s){
return s.split(" ");
}
}
26번부터 시간초과.
import java.util.*;
class Solution {
public String[] solution(String[] record) {
String[] answer = {};
HashMap<String, String> user = new HashMap<>();
List<String> list = new ArrayList<>();
for(int i=0; i<record.length; i++){
String[] spr = record[i].split(" ");
if(spr[0].equals("Enter") || spr[0].equals("Change")){
user.put(spr[1],spr[2]);
}
}
for(int i=0; i<record.length; i++){
String[] spr = record[i].split(" ");
if(spr[0].equals("Enter")){
String temp = user.get(spr[1]);
list.add(temp+"님이 들어왔습니다.");
}else if(spr[0].equals("Leave")){
String temp = user.get(spr[1]);
list.add(temp+"님이 나갔습니다.");
}else{
continue;
}
}
answer = new String[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
해쉬맵을 이용하여 빠르게 풀어서 통과.
두 값을 가지는 객체가 필요할때 class를 새로 만드는 방법보단 HashMap을 고려해보는게 좋겠다.
HashMap 주요 메소드
- put(key,value ) : 키와 밸류값으로 구성된 새로운 데이터를 추가한다.
이때, 같은 키값으로 다른 밸류값을 넣어주면 기존의 키값에 대한 밸류값이 변한다.
같은 키값을 가지는 두개의 데이터가 생기는것이 아니다.
- get(key) : 지정한 key에 해당하는 데이터를 반환한다.
- remove(key) : 지정한 key에 해당하는 데이터를 삭제한다.
- containKey(key) : 지정한 key가 존재하는지 여부를 반환한다.
- containValue(value) : 지정한 value가 존재하는지 여부를 반환한다.
- size( ) : map의 요소 개수를 반환한다.
- isEmpty( ) : map이 비었는지 여부를 반환한다.
'프로그래머스 > 카카오' 카테고리의 다른 글
[프로그래머스] n진수 게임 (0) | 2020.04.08 |
---|---|
[프로그래머스] 카카오프렌즈 컬러링북 (0) | 2020.04.04 |
[프로그래머스] [1차] 뉴스 클러스터링 (0) | 2020.04.01 |
[프로그래머스] 크레인 인형뽑기 (0) | 2020.04.01 |
[프로그래머스] [1차] 다트게임 (0) | 2020.03.31 |