-
[프로그래머스] 오픈채팅방 (2019 KAKAO BLIND RECRUITMENT)ALGORITHM/PROGRAMMERS 2021. 3. 5. 23:07
programmers.co.kr/learn/courses/30/lessons/42888
2021-03-05
1234567891011121314151617181920212223242526272829303132333435363738import java.util.Arrays;import java.util.HashMap;import java.util.Map;public class Solution42888 {public static String[] solution(String[] record) {Map<String, String> name = new HashMap<>();String[][] arr = new String[record.length][2];int idx = 0;for (String s : record) {String[] tmp = s.split(" ");String order = tmp[0];String id = tmp[1];String nm = "";if (!order.equals("Leave")) nm = tmp[2];if (!order.equals("Change")) {arr[idx][0] = id;arr[idx][1] = order;idx++;}if (!order.equals("Leave")) {name.put(id, nm);}}String[] answer = new String[idx];for(int i = 0; i < idx; i++) {if(arr[i][1].equals("Enter")) answer[i] = name.get(arr[i][0]) + "님이 들어왔습니다.";else answer[i] = name.get(arr[i][0]) + "님이 나갔습니다.";}return answer;}public static void main(String[] args) {String[] r = {"Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"};System.out.println(Arrays.toString(solution(r)));}}cs #문제풀이
map이랑 2차원 배열을 이용했다. map은 id값과 그 이름을 저장하고, arr 2차원 배열은 id값과 order를 저장한다.
record 한 번 돌고, 그 다음 Enter와 Leave를 저장한 array 길이만큼 돈다.
1. 입력받은 record 값을 " "로 쪼개서, order, id, nm으로 저장했다.
2. Change가 아닌 Enter와 Leave의 경우 arr에 id와 order값을 넣어준다.
3. Leave가 아닌 경우 nm도 업데이트 해준다.
4. Enter와 Leave를 저장한 array를 돌면서 메시지를 각각에 맞게 넣어준다.
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] 수식 최대화 (2020 카카오 인턴십) (0) 2021.03.15 [프로그래머스] 튜플 (2019 카카오 개발자 겨울 인턴십) (0) 2021.03.07 [프로그래머스] 문자열 압축 (2020 KAKAO BLIND RECRUITMENT) (0) 2021.03.05 [프로그래머스] 징검다리 건너기 (2019 카카오 개발자 겨울 인턴십) (0) 2021.03.04 [프로그래머스] 경주로 건설 (2020 카카오 인턴십) (0) 2021.03.02