ํ๋ก๊ทธ๋๋จธ์ค LV.1 ๋ชจ์
๋์ถฉ ๋ง๋ ์ํ
๋ฌธ์ ์ค๋ช
ํด๋ํฐ์ ์ํ์ ์ปดํจํฐ ํค๋ณด๋ ์ํ๊ณผ๋ ๋ค๋ฅด๊ฒ ํ๋์ ํค์ ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๊ฐ ํ ๋น๋ ์ ์์ต๋๋ค. ํค ํ๋์ ์ฌ๋ฌ ๋ฌธ์๊ฐ ํ ๋น๋ ๊ฒฝ์ฐ, ๋์ผํ ํค๋ฅผ ์ฐ์ํด์ ๋น ๋ฅด๊ฒ ๋๋ฅด๋ฉด ํ ๋น๋ ์์๋๋ก ๋ฌธ์๊ฐ ๋ฐ๋๋๋ค.
์๋ฅผ ๋ค์ด, 1๋ฒ ํค์ "A", "B", "C" ์์๋๋ก ๋ฌธ์๊ฐ ํ ๋น๋์ด ์๋ค๋ฉด 1๋ฒ ํค๋ฅผ ํ ๋ฒ ๋๋ฅด๋ฉด "A", ๋ ๋ฒ ๋๋ฅด๋ฉด "B", ์ธ ๋ฒ ๋๋ฅด๋ฉด "C"๊ฐ ๋๋ ์์ ๋๋ค.
๊ฐ์ ๊ท์น์ ์ ์ฉํด ์๋ฌด๋ ๊ฒ๋ ๋ง๋ ํด๋ํฐ ์ํ์ด ์์ต๋๋ค. ์ด ํด๋ํฐ ์ํ์ ํค์ ๊ฐ์๊ฐ 1๊ฐ๋ถํฐ ์ต๋ 100๊ฐ๊น์ง ์์ ์ ์์ผ๋ฉฐ, ํน์ ํค๋ฅผ ๋๋ ์ ๋ ์ ๋ ฅ๋๋ ๋ฌธ์๋ค๋ ๋ฌด์์๋ก ๋ฐฐ์ด๋์ด ์์ต๋๋ค. ๋, ๊ฐ์ ๋ฌธ์๊ฐ ์ํ ์ ์ฒด์ ์ฌ๋ฌ ๋ฒ ํ ๋น๋ ๊ฒฝ์ฐ๋ ์๊ณ , ํค ํ๋์ ๊ฐ์ ๋ฌธ์๊ฐ ์ฌ๋ฌ ๋ฒ ํ ๋น๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์ฌ์ง์ด ์์ ํ ๋น๋์ง ์์ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ช๋ช ๋ฌธ์์ด์ ์์ฑํ ์ ์์ ์๋ ์์ต๋๋ค.
์ด ํด๋ํฐ ์ํ์ ์ด์ฉํด ํน์ ๋ฌธ์์ด์ ์์ฑํ ๋, ํค๋ฅผ ์ต์ ๋ช ๋ฒ ๋๋ฌ์ผ ๊ทธ ๋ฌธ์์ด์ ์์ฑํ ์ ์๋์ง ์์๋ณด๊ณ ์ ํฉ๋๋ค.
1๋ฒ ํค๋ถํฐ ์ฐจ๋ก๋๋ก ํ ๋น๋ ๋ฌธ์๋ค์ด ์์๋๋ก ๋ด๊ธด ๋ฌธ์์ด๋ฐฐ์ด keymap๊ณผ ์ ๋ ฅํ๋ ค๋ ๋ฌธ์์ด๋ค์ด ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด targets๊ฐ ์ฃผ์ด์ง ๋, ๊ฐ ๋ฌธ์์ด์ ์์ฑํ๊ธฐ ์ํด ํค๋ฅผ ์ต์ ๋ช ๋ฒ์ฉ ๋๋ฌ์ผ ํ๋์ง ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๋จ, ๋ชฉํ ๋ฌธ์์ด์ ์์ฑํ ์ ์์ ๋๋ -1์ ์ ์ฅํฉ๋๋ค.
์ ํ ์ฌํญ
- 1 ≤ keymap์ ๊ธธ์ด ≤ 100
- 1 ≤ keymap์ ์์์ ๊ธธ์ด ≤ 100
- keymap[i]๋ i + 1๋ฒ ํค๋ฅผ ๋๋ ์ ๋ ์์๋๋ก ๋ฐ๋๋ ๋ฌธ์๋ฅผ ์๋ฏธํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด keymap[0] = "ABACD"์ธ ๊ฒฝ์ฐ 1๋ฒ ํค๋ฅผ ํ ๋ฒ ๋๋ฅด๋ฉด A, ๋ ๋ฒ ๋๋ฅด๋ฉด B, ์ธ ๋ฒ ๋๋ฅด๋ฉด A ๊ฐ ๋ฉ๋๋ค.
- keymap์ ์์์ ๊ธธ์ด๋ ์๋ก ๋ค๋ฅผ ์ ์์ต๋๋ค.
- keymap์ ์์๋ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- 1 ≤ targets์ ๊ธธ์ด ≤ 100
- 1 ≤ targets์ ์์์ ๊ธธ์ด ≤ 100
- targets์ ์์๋ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
keymap | targets | result |
["ABACD", "BCEFD"] | ["ABCD","AABB"] | [9, 4] |
["AA"] | ["B"] | [-1] |
["AGZ", "BSSS"] | ["ASA","BGZ"] | [4, 6] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- "ABCD"์ ๊ฒฝ์ฐ,
- 1๋ฒ ํค ํ ๋ฒ → A
- 2๋ฒ ํค ํ ๋ฒ → B
- 2๋ฒ ํค ๋ ๋ฒ → C
- 1๋ฒ ํค ๋ค์ฏ ๋ฒ → D
- ๋ฐ๋ผ์ ์ดํฉ์ธ 9๋ฅผ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ์ฅํฉ๋๋ค.
- "AABB"์ ๊ฒฝ์ฐ,
- 1๋ฒ ํค ํ ๋ฒ → A
- 1๋ฒ ํค ํ ๋ฒ → A
- 2๋ฒ ํค ํ ๋ฒ → B
- 2๋ฒ ํค ํ ๋ฒ → B
- ๋ฐ๋ผ์ ์ดํฉ์ธ 4๋ฅผ ๋ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ์ฅํฉ๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก [9,4]๋ฅผ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- "B"์ ๊ฒฝ์ฐ, 'B'๊ฐ ์ด๋์๋ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ -1์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ์ฅํฉ๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก [-1]์ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
- "ASA"์ ๊ฒฝ์ฐ,
- 1๋ฒ ํค ํ ๋ฒ → A
- 2๋ฒ ํค ๋ ๋ฒ → S
- 1๋ฒ ํค ํ ๋ฒ → A
- ๋ฐ๋ผ์ ์ดํฉ์ธ 4๋ฅผ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ์ฅํฉ๋๋ค.
- "BGZ"์ ๊ฒฝ์ฐ,
- 2๋ฒ ํค ํ ๋ฒ → B
- 1๋ฒ ํค ๋ ๋ฒ → G
- 1๋ฒ ํค ์ธ ๋ฒ → Z
- ๋ฐ๋ผ์ ์ดํฉ์ธ 6์ ๋ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ์ฅํฉ๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก [4, 6]์ return ํฉ๋๋ค.
์ ์ถ
import Foundation
func solution(_ keymap:[String], _ targets:[String]) -> [Int] {
var dict = [String: Int]()
var keymap = keymap.map{$0.map{String($0)}}
var result = [Int]()
for k in keymap{
for i in k{
if dict[i] == nil {
dict[i] = k.firstIndex(of: i)!
}else{
dict[i] = min(dict[i]!, k.firstIndex(of: i)!)
}
}
}
for target in targets {
var sum = 0
for t in target.map{String($0)} {
if dict[t] == nil {
sum = -1
break
}else{
sum += dict[t]!+1
}
}
result.append(sum)
}
return result
}
keymap์ ๋ฌธ์๋ฅผ key๋ก ์์๋ฅผ value๋ก ๊ฐ๋ ๋์ ๋๋ฆฌ dict๋ฅผ ์ ์ธํ๋ค.
keymap์ Stringํ 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ณํํ๋ค. ๊ฒฐ๊ด๊ฐ์ ์ ์ฅํ Intํ ๋ฐฐ์ด result๋ฅผ ์ ์ธํ๋ค.
keymap์์ ๋ฌธ์๋ฅผ dict์ ์ฒ์ ์ถ๊ฐํ ๋(value == nil), ๋ฌธ์์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋ค.
์ด๋ฏธ dict์ ๋ฌธ์๋ฅผ key๋ก ๊ฐ๋ value๊ฐ ์กด์ฌํ๋ค๋ฉด, ๊ธฐ์กด value๊ฐ๊ณผ ๋ฌธ์์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค ์ค์์ ์์ ๊ฐ์ ์ ์ฅํ๋ค.
(์ ์ถ๋ ฅ ์์ 1์์ ์ฒซ ๋ฒ์งธ keymap์์ "B"์ ์์น๋ 1๋ฒ์ธ๋ฐ, ๋ ๋ฒ์งธ keymap์์๋ 0๋ฒ์ด๋ค. ์ด๋ด ๊ฒฝ์ฐ 0์ด ์ ์ฅ๋๋ค)
tartgets๋ฐฐ์ด์์ target์ ๋ฌธ์๊ฐ dict์ ์๋ค๋ฉด sum ๋ณ์์ -1์ ์ ์ฅํ๊ณ for๋ฌธ์ ์ข ๋ฃํ๋ค.
target์ ๋ฌธ์๊ฐ dict์ ์๋ค๋ฉด, sum์ dict[t]+1์ ๋ํ๋ค.
result์ sum์ ์ถ๊ฐํ๋ค.
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ๋ฐฑ์ค 18258๋ฒ - ํ 2 (0) | 2023.03.20 |
---|---|
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV.1 ๋ฐํํ๋ฉด ์ ๋ฆฌ (0) | 2023.03.19 |
[Swift] ๋ฐฑ์ค 9012๋ฒ - ๊ดํธ (0) | 2023.03.18 |
[Swift] ๋ฐฑ์ค 10828๋ฒ - ์คํ (0) | 2023.03.18 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV.1 ์นด๋ ๋ญ์น (0) | 2023.03.18 |