๋ฌธ์ :
https://programmers.co.kr/learn/courses/30/lessons/42888
๋ถ์ :
ํ์คํ swift๋ c++๋ณด๋ค ๋ฌธ์์ด ํ์ฑ์ ์์ด์ ์ ์ฉํ๊ฒ ๊ฐ๋ค ! ๊ทธ๋์ ์์ด๋์ด๋ง ์๊ฐ๋๋ฉด ๊ตฌํํ๊ธฐ ์์ํ๋ค๋ ์๊ฐ์ ๋ค์ํ๋ฒ ํ๊ฒ ๋์๋ค. swift ์งฑ ..๐
์ด ๋ฌธ์ ๋ ๋ฌธ์์ด ํ์ฑ ๋ฐ ๊ตฌํ ๋ฌธ์ ๋ก, ์คํ ์ฑํ ๋ฐฉ์ ๋ค์ด์์๋, ๋๊ฐ์๋, ์ด๋ฆ์ ๋ณ๊ฒฝํ์๋์ ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํด์ฃผ๋ฉด ๋๋ค. ๊ธฐ์กด ํก๋ฐฉ ์ฐธ์ฌ์๊ฐ ์ด๋ฆ์ ๋ณ๊ฒฝํ๊ณ ๋ค์ ๋ค์ด์ค๊ฒ ๋๋ฉด ํก๋ฐฉ์๋ ์ ์ด๋ฆ -> ํ์ฌ ์ด๋ฆ์ผ๋ก ๊ฐ์ด ๋ณ๊ฒฝ์ด ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
๋ฐ๋ผ์ ์ฒ์์ for๋ฌธ์ ๋๋ฉด์ enter์ change ๋ช ๋ น์ด ์, inputDictionary์ ์ ์ฅ๋์ด ์๋ ์ ์ ๋ผ๋ฉด ์ถ๋ ฅ ๋ฐฐ์ด์ ๋๋ฉฐ ํ๋์ฉ
replacingOccurrences(of:\(์์ ์ด๋ฆ), with: \(ํ์ฌ ์ด๋ฆ))์ผ๋ก ๋์ฒดํ๊ณ ์ ํ์๋ค. ํ์ง๋ง 25๋ถํฐ ์ฃผ๋ฅด๋ฅต ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค...
๊ทธ๋์ ๋ค๋ฅธ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด ์์ด๋์ด๋ฅผ ์ป์๋ค.
for๋ฌธ์ ๋๊ธฐ ์ ์ inputDictionary์ ๋ง์ง๋ง ์ด๋ฆ์ ์ด๊ธฐ๊ฐ์ผ๋ก ๊ฐ์ง๊ฒ ํ ๋ค, ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํด์ฃผ๋ฉด enter, change์ ์ถ๋ ฅ๋ฌธ ๋ด ๊ฐ์ ์์ด๋ ๊ฐ์ง ์ฌ๋์ ์ฐพ์ ๋์ฒดํด์ฃผ์ง ์์๋ ๋๋ค๋ ์ ..!
์ด๋ฅผ ํด๊ฒฐํ๋ ์๊ฐ ์ด๊ณผ๊ฐ ํด๊ฒฐ ๋์๋ค. ํด์ ๋งต ๋ฐฉ์์ด for๋ฌธ๋ณด๋ค ๋น ๋ฆ์ ๋๋ ์ ์์๋ค.
Swift ์๊ฐ์ด๊ณผ ์ฝ๋ :
//
// main.swift
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2022/05/02.
//
import Foundation
var inputDic:[String: String] = [:]
var answer = [(String, String)]()
func reName(_ id: String, _ name: String) {
if inputDic.keys.contains(id) { // id๊ฐ ์ ์ฅ๋ ์ฌ๋์ด๋ผ๋ฉด
for (idx, i) in answer.enumerated() {
if i.1 == id {
answer[idx].0 = i.0.replacingOccurrences(of: "\(inputDic[i.1]!)", with: "\(name)")
}
}
}
inputDic[id] = name
}
func solution(_ record:[String]) -> [String]{
for line in record {
let l = line.components(separatedBy: " ")
let command = l[0]
let id = l[1]
switch command {
case "Enter":
let name = l[2]
reName(id, name)
answer.append(("\(name)๋์ด ๋ค์ด์์ต๋๋ค.", id))
case "Leave":
answer.append(("\(inputDic[id]!)๋์ด ๋๊ฐ์ต๋๋ค.", id))
case "Change":
let name = l[2]
reName(id, name)
default:
print("")
}
}
return answer.map { $0.0 }
}
Swift ํด๊ฒฐ ์ฝ๋ :
//
// main.swift
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2022/05/02.
//
import Foundation
func solution(_ record:[String]) -> [String]{
var inputDic:[String: String] = [:]
var answer = [String]()
for line in record {
let l = line.components(separatedBy: " ")
if l.count > 2 {
inputDic[l[1]] = l[2]
}
}
for line in record {
let l = line.components(separatedBy: " ")
let command = l[0]
let id = l[1]
switch command {
case "Enter":
answer.append("\(inputDic[id]!)๋์ด ๋ค์ด์์ต๋๋ค.")
case "Leave":
answer.append("\(inputDic[id]!)๋์ด ๋๊ฐ์ต๋๋ค.")
default:
print("")
}
}
return answer
}
๊ฒฐ๊ณผ :
๋๊ธ