카테고리 없음
[프로그래머스] 2019 카카오 블라인드 / Java / 오픈채팅방
ZeroIron
2020. 8. 29. 20:37
문제 - (programmers.co.kr/learn/courses/30/lessons/42888)
HashMap을 사용하면 어렵지 않은 문제였다.
테크닉 정도를 기억하고자 한다
String형 타입의 ArrayList<String> list 가 있다면
이 리스트를 배열로 나타내야 할 때,
list.toArray(new String[list.size()]);
를 사용해서 배열로 나타낼 수 있다
코드
import java.util.ArrayList;
import java.util.HashMap;
import java.util.StringTokenizer;
class Solution {
public String[] solution(String[] record) {
HashMap<String, String> map = new HashMap<>();
for (String line : record) {
// 명령어 파싱
StringTokenizer st = new StringTokenizer(line);
String cmd = st.nextToken();
if (cmd.equals("Leave")) continue;
map.put(st.nextToken(), st.nextToken());
}
// memo한 cmd를 가지고 result 생성
StringBuilder sb = new StringBuilder();
ArrayList<String> answer = new ArrayList<>();
for (String line : record) {
StringTokenizer st = new StringTokenizer(line);
String cmd = st.nextToken();
switch (cmd) {
case "Enter":
sb.append(map.get(st.nextToken())).append("님이 들어왔습니다.");
break;
case "Leave":
sb.append(map.get(st.nextToken())).append("님이 나갔습니다.");
break;
default:
continue;
}
answer.add(sb.toString());
sb.setLength(0);
}
return answer.toArray(new String[answer.size()]);
}
}