🙋🏼 문제
오픈채팅방
💡 풀이
쉬워보이는데 생각보다 품이 많이 든 문제!
record의 값을 전부 확인한 후 (id 체크), 출력을 위해서 다시 id와 leave / enter 체크를 해줘야 한다.
물론 실제라면 UI에서 일부만 확인해서 바꿔줘야겠지만.. (어케함!)
|
let enter = "님이 들어왔습니다." |
|
let leave = "님이 나갔습니다." |
|
var member = [String : String]() |
|
var arr: [[String]] = [] |
|
var result: [String] = [] |
enter, leave 시의 텍스트를 따로 저장해주었고, member dictionary에는 id와 닉네임을 저장할 수 있도록 했다.
arr는 두번째 단계에서 id와 leave / enter 확인해줄 때 사용해주기 위함이고, result는 결과 array
|
record.forEach { |
|
let text = $0.components(separatedBy: " ") |
|
switch text[0] { |
|
case "Enter": |
|
arr.append([text[1], enter]) |
|
member[text[1]] = text[2] |
|
case "Leave": |
|
arr.append([text[1], leave]) |
|
case "Change": |
|
member[text[1]] = text[2] |
|
default: |
|
return |
|
} |
|
} |
record의 문장을 하나씩 보며 space를 기준으로 나눠주었다.
Enter / Leave / Change로 나뉘게 되는 text[0]을 switch - case 문으로 나눴다.
- Enter 시, id에 해당하는 text[1]와 닉네임에 해당하는 text[2]를 member dictionary에 넣었다.
그리고 id와 enter 텍스트를 arr에 추가했다.
(생각해 보니까 굳이 enter 텍스트를 여기서 넣었어야 하나 싶다.. 걍 result 단계에서 넣어줄걸..)
- Leave 시, id와 leave 텍스트를 arr에 추가했다. member를 건들지 않은 것은 여기서는 id가 바뀌지 않고, 앞선 Enter가 없다면 Leave가 발생할 수 없는데 Enter에서 이미 member를 건드리기 때문!
- Change 시, result에 출력되는 것이 없기 때문에 arr에 추가할 필요는 없고, 이름이 바뀌었을 때 member의 id를 확인해서 바꿔줘야 하기 때문에 member id에 이름을 교체해주었다.
|
arr.forEach { |
|
if let name = member[$0[0]] { |
|
result.append(name + $0[1]) |
|
} else { |
|
return |
|
} |
|
} |
arr를 forEach로 확인해 주면서, result에 해당 id에 해당하는 이름과 enter / leave 텍스트를 추가해주었다.
그리고 마지막에 return result로 답 반환
처음 채점 때 if let 문 안 써서 테스트 케이스 하나가 날라감..
상여자식 코드 (강제 언래핑) 쓰려다가 말았다 ㅋㅋ;;
🙋🏼 문제
오픈채팅방
💡 풀이
쉬워보이는데 생각보다 품이 많이 든 문제!
record의 값을 전부 확인한 후 (id 체크), 출력을 위해서 다시 id와 leave / enter 체크를 해줘야 한다.
물론 실제라면 UI에서 일부만 확인해서 바꿔줘야겠지만.. (어케함!)coding_test_practice/coding_test_practice/240702_42888.swift
Lines 11 to 15 in 05f2b45
enter, leave 시의 텍스트를 따로 저장해주었고, member dictionary에는 id와 닉네임을 저장할 수 있도록 했다.
arr는 두번째 단계에서 id와 leave / enter 확인해줄 때 사용해주기 위함이고, result는 결과 array
coding_test_practice/coding_test_practice/240702_42888.swift
Lines 17 to 30 in 05f2b45
record의 문장을 하나씩 보며 space를 기준으로 나눠주었다.
Enter / Leave / Change로 나뉘게 되는 text[0]을 switch - case 문으로 나눴다.
그리고 id와 enter 텍스트를 arr에 추가했다.
(생각해 보니까 굳이 enter 텍스트를 여기서 넣었어야 하나 싶다.. 걍 result 단계에서 넣어줄걸..)
coding_test_practice/coding_test_practice/240702_42888.swift
Lines 32 to 38 in 05f2b45
arr를 forEach로 확인해 주면서, result에 해당 id에 해당하는 이름과 enter / leave 텍스트를 추가해주었다.
그리고 마지막에
return result로 답 반환처음 채점 때 if let 문 안 써서 테스트 케이스 하나가 날라감..
상여자식 코드 (강제 언래핑) 쓰려다가 말았다 ㅋㅋ;;