inblog logo
|
LHS's Study Space
    알고리즘문제풀기프로그래머스

    [프로그래머스] 오픈채팅방(42888)

    lhs's avatar
    lhs
    Dec 01, 2024
    [프로그래머스] 오픈채팅방(42888)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/42888
     

    1. 문제 풀이 아이디어

    • List와 Map을 사용하여 문제를 해결할 수 있다.

    2. 나의 정답 코드

    class Solution { public String[] solution(String[] record) { List<String> log = new ArrayList<>(); List<String> uid = new ArrayList<>(); Map<String, String> map = new HashMap<>(); for (String s : record) { String[] ss = s.split(" "); if (ss[0].equals("Enter")) { uid.add(ss[1]); log.add("님이 들어왔습니다."); map.put(ss[1], ss[2]); } else if (ss[0].equals("Leave")) { uid.add(ss[1]); log.add("님이 나갔습니다."); } else if (ss[0].equals("Change")) { map.put(ss[1], ss[2]); } } for (int i = 0; i < log.size(); i++) { log.set(i, map.get(uid.get(i)) + log.get(i)); } return log.toArray(new String[0]); } }

    3. 정리

    • 입력을 처리할 때, 문자열을 분리해 uid는 uid 리스트에, 로그 메시지는 log 리스트에 저장한다. 닉네임은 Map에 uid와 함께 저장한다.
    • 모든 입력을 처리한 후, log 리스트를 순회하며 각 로그 앞에 uid에 대응하는 닉네임을 map에서 가져와 추가한다.
    • 최종적으로 log 리스트를 배열로 변환하여 반환한다.
    Share article

    LHS's Study Space

    RSS·Powered by Inblog