Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 생성
- Spring
- 함수
- 에러
- IntelliJ
- 자바
- 쿼리
- 오라클
- jquery
- JPA
- Vue
- error
- Git
- db
- oracle
- 넥사크로
- kotlin
- 스프링
- JavaScript
- GitHub
- 방법
- 시큐리티
- Eclipse
- Security
- 프로그래머스
- 코틀린
- mybatis
- Java
- aws
- 알고리즘
Archives
- Today
- Total
송민준의 개발노트
[프로그래머스] 오픈채팅방 본문
https://programmers.co.kr/learn/courses/30/lessons/42888?language=java
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
class Solution {
public String[] solution(String[] record) {
// 아이디와 닉네임을 보관하는 user
Map<String, String> user = new HashMap<String, String>();
// 메시지를 보관하는 result
List<Result> result = new ArrayList<Result>();
// 메시지에는 아이디 + boolean(true : 들어왔다 , false : 나갔다)
for(String re : record) {
String[] reArray = re.split(" ");
String command = reArray[0];
String uid = reArray[1];
switch(command) {
case "Enter":
user.put(uid, reArray[2]);
result.add(new Result(uid, true));
break;
case "Leave":
result.add(new Result(uid, false));
break;
case "Change":
user.put(uid, reArray[2]);
break;
default:
break;
}
}
String[] answer = new String[result.size()];
for(int i = 0; i < result.size(); i++) {
Result temp = result.get(i);
answer[i] = temp.getMsg(user);
}
return answer;
}
class Result {
private String id;
private Boolean isEnter;
public String getMsg(Map<String, String> user) {
String convertMsg = isEnter ? "님이 들어왔습니다." : "님이 나갔습니다.";
return user.get(id) + convertMsg;
}
public Result(String id, Boolean isEnter) {
this.id = id;
this.isEnter = isEnter;
}
}
}
1년 전 풀었던 코드
효율성을 통과 못했던 것 같다...
코드 수준도 ...ㅎㅎ
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
class Solution {
public String[] solution(String[] record) {
HashMap<String, String> user = new HashMap<String, String>();
ArrayList<String> result = new ArrayList<String>();
ArrayList<String> matchId = new ArrayList<String>();
for(String re : record) {
String[] reArray = re.split(" ");
if(reArray.length != 2) {
user.put(reArray[1], reArray[2]);
}
switch(reArray[0]) {
case "Enter" :
if(!user.containsKey(reArray[1])) { //처음 들어온 회원
result.add(user.get(reArray[1]) + "님이 들어왔습니다.");
matchId.add(reArray[1]);
} else { // 처음 들어온 회원이 아님
for(int i =0; i < matchId.size(); i++) { //List 길이만큼
if(reArray[1].equals(matchId.get(i))) { // 들어온 아이디가 List의 아이디가 같다면
StringBuilder active = new StringBuilder("");
active.append(result.get(i).substring(result.get(i).indexOf("님"))); //님이 ~ 했습니다
result.set(i, reArray[2]+active.toString()); // 닉넴 + 행동으로 바꿔줌
}
}
result.add(user.get(reArray[1]) + "님이 들어왔습니다.");
matchId.add(reArray[1]);
}
break;
case "Leave" :
result.add(user.get(reArray[1]) + "님이 나갔습니다.");
matchId.add(reArray[1]);
break;
default :
for(int i =0; i < matchId.size(); i++) { //List 길이만큼
if(reArray[1].equals(matchId.get(i))) {
StringBuilder active = new StringBuilder("");
active.append(result.get(i).substring(result.get(i).indexOf("님"))); //님이 ~ 했습니다
result.set(i, reArray[2]+active.toString()); // 닉넴 + 행동으로 바꿔줌
}
}
break;
}
}
String[] answer = new String[result.size()];
answer = result.toArray(answer);
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 소수 만들기 (0) | 2022.05.02 |
---|---|
[프로그래머스] 카카오프렌즈 컬러링북 (0) | 2022.04.30 |
[프로그래머스] 더 맵게 (0) | 2022.04.25 |
[프로그래머스] 음양 더하기 (0) | 2022.04.24 |
[프로그래머스] 없는 숫자 더하기 (0) | 2022.04.18 |