문제 자체는 들어오는 문자열의 파싱이나 검색을 할수 있는지 묻는 문제로 보인다.
입력형식은 고정되어있기에 split 을 통해 파싱해서 2개냐 3개냐로도 판단할수있고
처음에검색을통해 종류를 판별후 서브스트링으로 만들어 풀수도 있겠다 싶다.
아래 소스에서는 enum으로 종류를 넣고 HashMap을통해 닉네임을 덮어쓰기를 하도록했다
import java.util.ArrayList;
import java.util.HashMap;
public class Solution {
enum recordType { Enter,Leave,Change,ERROR }
public String[] solution(String[] record) {
HashMap<String, String> usersMap = new HashMap<>();
ArrayList<String> midResult = new ArrayList<>();
String[] answer; // 뒤에서 초기화 해주자
for(int i = 0 ; i < record.length ; i++) {
//회원별 저장
String msg = record[i];
String[] sub = msg.split(" ");
recordType type;
if(sub.length >= 2) {
String key = "";
type = recordType.valueOf(sub[0]);
key = sub[1];
if(type != recordType.Leave && type != recordType.ERROR) {
if(sub.length > 2) {
String name = sub[2];
usersMap.put(key, name);
}
}
if(type != recordType.Change) {
midResult.add(key + ";" + type.toString());
}
} else {
System.out.println("ERROR msg parse");
return new String[] {};
}
}
answer = new String[midResult.size()];
for (int i = 0; i < midResult.size(); i++) {
String mid = midResult.get(i);
String[] sub = mid.split(";");
String name = usersMap.get(sub[0]) != null ? usersMap.get(sub[0]) : "";
recordType type = recordType.valueOf(sub[1]) != null ? recordType.valueOf(sub[1]): recordType.ERROR;
answer[i] = name + "님이";
switch (type) {
case Enter:
answer[i] += " 들어왔습니다.";
break;
case Leave:
answer[i] += " 나갔습니다.";
break;
case Change:case ERROR:default:
answer[i] += "";
break;
}
}
return answer;
}
}
http://tech.kakao.com/2018/09/21/kakao-blind-recruitment-for2019-round-1/
'Android > java' 카테고리의 다른 글
android studio : Could not find method dependencyResolutionManagement() 를 해결하기까지의 기록 (0) | 2021.12.22 |
---|---|
프로그래머스 - 주식가격 (0) | 2021.04.30 |
프로그래머스 - 실패율 (2019 카카오 신입공채 코딩테스트 2번문제) (0) | 2019.07.24 |