-
19. 오픈채팅방코딩 테스트/Level 2 2020. 8. 2. 13:27반응형
https://programmers.co.kr/learn/courses/30/lessons/42888
2019 KAKAO BLIND RECRUITMENT
5241명 완료공개된지 얼마 안된 문제라 완료수가 작을 뿐 쉬운 문제입니다.
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=817208def 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() } }
반응형