ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 19. 오픈채팅방
    코딩 테스트/Level 2 2020. 8. 2. 13:27
    반응형

    https://programmers.co.kr/learn/courses/30/lessons/42888

    2019 KAKAO BLIND RECRUITMENT
    5241명 완료

    공개된지 얼마 안된 문제라 완료수가 작을 뿐 쉬운 문제입니다. 

     

    코딩테스트 연습 - 오픈채팅방

    오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

    programmers.co.kr

    def solution(record):
        uid_name = {}
        for text in record:
            temp_list = text.split(' ')
            if len(temp_list) > 2:
                uid_name[temp_list[1]] = temp_list[2]
        answer = []
        for text in record:
            temp_list = text.split(' ')
            if temp_list[0] == 'Enter':
                answer.append(uid_name[temp_list[1]] + '님이 들어왔습니다.')
            elif temp_list[0] == 'Leave':
                answer.append(uid_name[temp_list[1]] + '님이 나갔습니다.')
        return answer

    한 줄 더 줄이기 위해.. 딕셔너리를 활용할 수도 있습니다.. 이게 무슨 의미가 있냐만... 
    if 나 case whitch문을 딕셔너리로 흉내내는 방법은 짝수와 홀수에서 설명한 적 있습니다.. 
    https://comdoc.tistory.com/entry/1-%EC%A7%9D%EC%88%98%EC%99%80-%ED%99%80%EC%88%98?category=817208

    def solution(record):
        uid_name = {}
        for text in record:
            temp_list = text.split(' ')
            if len(temp_list) > 2:
                uid_name[temp_list[1]] = temp_list[2]
        answer = []
        template = {'Enter': '님이 들어왔습니다.', 'Leave': '님이 나갔습니다.'}
        for text in record:
            temp_list = text.split(' ')
            if temp_list[0] in ('Enter', 'Leave'):
                answer.append(uid_name[temp_list[1]] + template[temp_list[0]])
        return answer

    자바 스크립트

    function solution(record) {
    	let uidName = {};
    	for (let i = 0; i < record.length; i++) {
    		let templist = record[i].split(" ");
    		if (templist.length > 2)
    			uidName[templist[1]] = templist[2]
    	}
    	let answer = [];
    	for (let i = 0; i < record.length; i++) {
    		let templist = record[i].split(" ");
    		if (templist[0] == 'Enter')
    			answer.push(uidName[templist[1]] + "님이 들어왔습니다.")
    		else if (templist[0] == 'Leave')
    			answer.push(uidName[templist[1]] + "님이 나갔습니다.")
    	}
    	return answer;
    }

    C#

    using System;
    using System.Collections.Generic;
    
    internal class Solution
    {
        public String[] solution(String[] record)
        {
            Dictionary<string, string> uidName = new Dictionary<string, string>();
            foreach (string text in record)
            {
                string[] tempList = text.Split(" ");
                if (tempList.Length > 2)
                    uidName[tempList[1]] = tempList[2];
            }
            List<string> answer = new List<string>();
            foreach (string text in record)
            {
                string[] tempList = text.Split(" ");
                if (tempList[0] == "Enter")
                    answer.Add(uidName[tempList[1]] + "님이 들어왔습니다.");
                else if (tempList[0] == "Leave")
                    answer.Add(uidName[tempList[1]] + "님이 나갔습니다.");
            }
            return answer.ToArray();
        }
    }

    Java

    import java.util.ArrayList;
    import java.util.HashMap;
    
    class Solution {
        public String[] solution(String[] record) {
            HashMap<String, String> uidName = new HashMap<>();
            for (String text : record) {
                String[] tempList = text.split(" ");
                if (tempList.length > 2)
                    uidName.put(tempList[1], tempList[2]);
            }
            ArrayList<String> answer = new ArrayList <String>();
            for (String text : record) {
                String[] tempList = text.split(" ");
                if (tempList[0].equals("Enter"))
                    answer.add(uidName.get(tempList[1]) + "님이 들어왔습니다.");
                else if (tempList[0].equals("Leave"))
                    answer.add(uidName.get(tempList[1]) + "님이 나갔습니다.");
            }
            return answer.toArray(new String[answer.size()]);
        }
    }

    코틀린

    import java.util.*
    import kotlin.collections.HashMap
    import kotlin.collections.set
    import kotlin.collections.toTypedArray
    
    
    internal class Solution {
        fun solution(record: Array<String>): Array<String> {
            val uidName = HashMap<String, String>()
            for (text in record) {
                val tempList = text.split(" ".toRegex()).toTypedArray()
                if (tempList.size > 2) uidName[tempList[1]] = tempList[2]
            }
            val answer = ArrayList<String>()
            for (text in record) {
                val tempList = text.split(" ".toRegex()).toTypedArray()
                if (tempList[0] == "Enter") answer.add(
                    uidName[tempList[1]].toString() + "님이 들어왔습니다."
                ) else if (tempList[0] == "Leave") answer.add(uidName[tempList[1]].toString() + "님이 나갔습니다.")
            }
            return answer.toTypedArray()
        }
    }
    반응형
Designed by Tistory.