알고리즘 자료구조

2019 KAKAO BLIND RECRUITMENT 오픈채팅방 문제[Java,Js]

Zeta050525 2022. 8. 1. 11:09
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/42888?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

js
java

Java

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

class Solution {
    public List<String> solution(String[] record) {
        List<String> answer = new ArrayList<>();

        List<String[]> Nickname = new ArrayList<>(); //초기 닉네임만
        List<String> temp = new ArrayList<>(); //초기 닉네임을 위한 temp 배열
        HashMap<String,String>  NickName = new HashMap<String,String>();
        for(var x : record){
            String[] arr = x.split(" ");
            if(!arr[0].equals("Leave")){
                NickName.put(arr[1], arr[2]);
            }
        }
        // for(var i : NickName.keySet()){
        //     System.out.println(i + ":" + NickName.get(i));
        // }
        for(var x : record){
            String[] arr = x.split(" ");
            if(arr[0].equals("Enter")){
                answer.add(NickName.get(arr[1]) +"님이 들어왔습니다.");
            }
            else if(arr[0].equals("Leave")){
                answer.add(NickName.get(arr[1]) +"님이 나갔습니다.");
            }
        }

        return answer;
    }
}

 

 

후기

HashMap을 사용하면 간단하게 풀수있다. 비몽사몽한 상태로 풀었더니 Hashmap은 생각못하고

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public List<String> solution(String[] record) {
        List<String> answer = new ArrayList<>();

        List<String[]> Nickname = new ArrayList<>(); //초기 닉네임만
        List<String> temp = new ArrayList<>(); //초기 닉네임을 위한 temp 배열

        for(var x : record){
            String[] arr = Arrays.copyOfRange(x.split(" "), 1, 3);
            if(temp.indexOf(arr[0]) == -1){
                temp.add(arr[0]);
                Nickname.add(arr);
            }else continue;
        }

        for(var x : record){
            String[] arr = x.split(" ");
            if(!arr[0].equals("Leave")){
                int idx = temp.indexOf(arr[1]);
                Nickname.get(idx)[1] = arr[2];
            }
        }

        for(var x : record){
            String[] arr = x.split(" ");
            if(arr[0].equals("Enter")){
                int idx = temp.indexOf(arr[1]);
                answer.add(Nickname.get(idx)[1] +"님이 들어왔습니다.");
            }
            else if(arr[0].equals("Leave")){
                int idx = temp.indexOf(arr[1]);
                answer.add(Nickname.get(idx)[1] +"님이 나갔습니다.");
            }
        }

        // for(var x : Nickname){
        //     System.out.println(Arrays.toString(x));
        // }
        return answer;
    }
}

요따구로 풀었다가 자꾸 시간초과가나서 for줄이려면 어떡하지 하면서 HashMap으로 풀었따.

728x90