오픈채팅방
Algorithm 2019. 8. 19. 16:14http://tech.kakao.com/2018/09/21/kakao-blind-recruitment-for2019-round-1/
https://www.welcomekakao.com/learn/courses/30/lessons/42888
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
namespace _07
{
class Program
{
static void Main(string[] args)
{
string[] arr = {"Enter uid1234 Muzi",
"Enter uid4567 Prodo",
"Leave uid1234",
"Enter uid1234 Prodo",
"Change uid4567 Ryan"};
// string[] arr = { "Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"};
var p3 = new Problem3();
p3.solution(arr);
}
}
public class Problem3{
List<User> users = new List<User>();
List<Command> commands = new List<Command>();
public class User{
public string Uid {get; set;}
public string NickName {get; set;}
public User(string uid, string nickName){
this.Uid = uid;
this.NickName = nickName;
}
}
public class Command{
public string Cmd{get; set;}
public string Uid{get; set;}
public string NickName {get; set;}
public Command(string cmd, string uid, string nickName = ""){
this.Cmd = cmd;
this.Uid = uid;
this.NickName = nickName;
}
}
public void solution(string[] strArr){
foreach(var str in strArr){
//유저 생성
var cmd = arr[0];
var uid = arr[1];
string nickName;
try{
nickName = arr[2];
}catch{
nickName = "";
}
if(!string.IsNullOrEmpty(nickName)){
var user = new User(uid, nickName);
}
}
//명령어 생성
Command command;
if(!string.IsNullOrEmpty(nickName)){
command = new Command(cmd, uid, nickName);
}else{
command = new Command(cmd, uid);
}
}
this.DisplayBuffer();
foreach(var command in this.commands){
Console.WriteLine(user.NickName + "님이 들어왔습니다.");
Console.WriteLine(user.NickName + "님이 나갔습니다.");
}
}
}
private void DisplayBuffer(){
foreach(var command in this.commands){
switch(command.Cmd){
case "Enter":
{
if(user!= null){
if(user.NickName != command.NickName){
user.NickName = command.NickName;
}
}
}
break;
case "Change":
{
if(user!= null){
user.NickName = command.NickName;
}
}
break;
}
}
}
}
}
|
자바스크립트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
let users = [];
let events = [];
function solution(record) {
var answer = [];
record.forEach((str)=>{
var arrInput = str.split(' ');
let user = {};
let event = {};
if(arrInput[2] !== undefined){
user.nickName = arrInput[2];
}else{
user.nickName = "";
}
if(foundUser === undefined){
}
event.cmd = arrInput[0];
event.nickName = user.nickName;
events.push(event);
if(event.cmd === "Enter" || event.cmd === "Change"){
if(user.nickName !== event.nickName){
user.nickName = event.nickName;
}
}
});
events.forEach(event => {
if(event.cmd === "Enter"){
}else if(event.cmd === "Leave"){
}
});
return answer;
}
|
테스트 25부터 시간 초과가 계속 뜬다...
김아라님
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
function solution(record) {
const userInfo = {};
const action = [];
const stateMapping = {
'Enter': '님이 들어왔습니다.',
'Leave': '님이 나갔습니다.'
}
record.forEach((v) => {
const [state, id, nick] = v.split(' ');
if(state !== "Change") {
}
if(nick) {
userInfo[id] = nick;
}
})
return `${userInfo[uid]}${stateMapping[state]}`;
})
}
|
SemteulGaram , 이주형 , 장봉기 , 양승모 , 장진호 외 2 명
1
2
3
4
5
|
function solution(record) {
a.slice().reverse().forEach(v => { if (v[2] && !nick[v[1]]) { nick[v[1]] = v[2] } })
return a.filter(v => { return v[0] !== 'Change' }).map(v => { return v[0] === 'Enter' ? nick[v[1]] + '님이 들어왔습니다.' : nick[v[1]] + '님이 나갔습니다.' })
}
|
이화섭 , SemteulGaram , 혜성 , Wonwoo Lee , DONGKEON KIM 외 1 명
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function solution(record) {
let ret = []
const uids = new Map()
record.forEach(entry => {
let [command, uid, nick] = entry.split(' ')
})
record.forEach(entry => {
let [command, uid] = entry.split(' ')
})
return ret
}
|
홍종화님
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
function solution(arr) {
const name = [];
const print = [];
for (let val of arr) {
let strArr = val.split(" ");
if (strArr[0] === "Enter") {
name[strArr[1]] = strArr[2];
} else if (strArr[0] === "Change") {
name[strArr[1]] = strArr[2];
}
}
for (let val of arr) {
let strArr = val.split(" ");
if (strArr[0] === "Change") continue;
else if (strArr[0] === "Enter") {
} else {
}
}
return print;
}
solution([
"Enter uid1234 Muzi",
"Enter uid4567 Prodo",
"Leave uid1234",
"Enter uid1234 Prodo",
"Change uid4567 Ryan"
]);
// 1번문제 16분컷
|
이원석님
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
function solution(record) {
let userArr = []
let resArr = []
let test = c.reduce((prev, next) => {
let arr = next.split(" ")
prev[arr[1]] = arr[2]
return prev
}, {})
let eleArr = ele.split(" ");
if( eleArr[0] == 'Enter'){
resArr.push(`${test[eleArr[1]]}님이 들어왔습니다.`)
}else if(eleArr[0] == 'Leave'){
resArr.push(`${test[eleArr[1]]}님이 나갔습니다.`)
}
})
return resArr
}
|
김바한솔님
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
function solution(record) {
const splitRecord = [];
const uidNickname = {};
var answer = [];
record.forEach(r => {
const s = r.split(' ');
if(s[2]) {
uidNickname[s[1]] = s[2];
}
});
splitRecord.forEach(r => {
let msg;
if(r[0] === 'Enter') {
msg = '님이 들어왔습니다.'
}
else if(r[0] === 'Leave') {
msg = '님이 나갔습니다.'
}
if(msg) {
answer.push(`${uidNickname[r[1]]}${msg}`);
}
})
return answer;
}
|
배지원님
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function solution(record) {
const users = {}
const actionType = {
Enter: '님이 들어왔습니다.',
Leave: '님이 나갔습니다.'
}
return record
.filter(v => {
const [action, id, nickname] = v.split(' ')
if (action !== 'Leave') users[id] = nickname
return action !== 'Change'
}).reduce((prev, curr) => {
const [action, id] = curr.split(' ')
prev.push(users[id] + actionType[action])
return prev
}, [])
}
|
BYUNGI님
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
function solution(record) {
const {users, answers} = parseRecord(record)
'Enter': `${users[uid]}님이 들어왔습니다.`,
'Leave': `${users[uid]}님이 나갔습니다.`,
})[act]);
}
function parseRecord(record){
const users = Object.create(null)
const answers = []
if(['Enter','Change'].includes(act)) users[uid] = nick
})
return {users, answers}
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
고경운님
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
const solution = (records) => {
const answer = [];
const map = new Map();
const [ type, id, nickname ] = record.split(' ');
});
switch (item.type) {
case 'Enter':
return `${map.get(item.id)}님이 들어왔습니다.`;
break;
case 'Leave':
return `${map.get(item.id)}님이 나갔습니다.`;
break;
}
});
};
|
고경운 , you , OREO
1
2
3
4
5
6
7
8
9
10
11
12
|
const solution = (record) => {
const answer = [];
const map = new Map();
const [ type, id, nickname ] = entry.split(' ');
});
};
|
'Algorithm' 카테고리의 다른 글
완주하지 못한 선수 (0) | 2019.08.20 |
---|---|
[js] 소수 구하기 (0) | 2019.08.20 |
Prime Number (0) | 2019.08.16 |
[Lv.2] 큰수 만들기 (탐욕법) (0) | 2019.08.16 |
[Lv.2] 소수 찾기 (0) | 2019.08.16 |