๋ฌธ์ ์ค๋ช
ํ๋ก๊ทธ๋๋จธ์ค ๋ชจ๋ฐ์ผ์ ๊ฐ์ธ์ ๋ณด ๋ณดํธ๋ฅผ ์ํด ๊ณ ์ง์๋ฅผ ๋ณด๋ผ ๋ ๊ณ ๊ฐ๋ค์ ์ ํ๋ฒํธ์ ์ผ๋ถ๋ฅผ ๊ฐ๋ฆฝ๋๋ค.
์ ํ๋ฒํธ๊ฐ ๋ฌธ์์ด phone_number๋ก ์ฃผ์ด์ก์ ๋, ์ ํ๋ฒํธ์ ๋ท 4์๋ฆฌ๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ซ์๋ฅผ ์ ๋ถ *์ผ๋ก ๊ฐ๋ฆฐ ๋ฌธ์์ด์ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํด์ฃผ์ธ์.
์ ํ ์กฐ๊ฑด
- s๋ ๊ธธ์ด 4 ์ด์, 20 ์ดํ์ธ ๋ฌธ์์ด์ ๋๋ค.
์ ์ถ๋ ฅ ์
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
๋ด ๋ฌธ์ ํ์ด
func solution(_ phone_number:String) -> String {
var arr = [String]()
var phoneNumCount = phone_number.count
while (phoneNumCount - 4 > 0){
arr.append("*")
phoneNumCount -= 1
}
let result:String = arr.joined() + phone_number.suffix(4)
return result
}
- *๋ฅผ ์ฐ๊ธฐ ์ํ arr ๋ฐฐ์ด ์์ฑ
- count ์ด์ฉํ์ฌ ์ ๋ ฅ ๋ฌธ์์ด์ ๊ธธ์ด ์ ์ฅ
- ์๋๋๋ก ์ซ์๋ฅผ ๋จ๊ฒจ๋ฌ์ผ ํ๋ ๋งจ ๋ค 4์๋ฆฌ๋ฅผ ์ ์ธํ๊ณ ,
๋๋จธ์ง ๋ถ๋ถ์ ํฌ๊ธฐ ๋งํผ arr ๋ฐฐ์ด์ *๋ฅผ append ์ด์ฉํ์ฌ ์ถ๊ฐํ๋ while๋ฌธ ์ฌ์ฉ - *๋ฅผ ์ฐ์ด์ค arr ๋ฐฐ์ด์ joined์ ์ฌ์ฉํด String์ผ๋ก ํฉ์ณ์ฃผ๊ณ ,
๊ฑฐ๊ธฐ์ suffix๋ฅผ ์ด์ฉํ์ฌ ์ฒ์ ์ ๋ ฅ ๋ฐ์๋ ๋ฌธ์์ด์ ๋งจ ๋ค 4๊ธ์๋ฅผ ๋ถ์ฌ์ค
์ธ์์ ์ธ ํ์ด
func solution(_ phone_number:String) -> String {
return String("\(String(repeating: "*", count: phone_number.count - 4))\(phone_number.suffix(4))")
}
- repeating์ ์ด์ฉํ์ฌ *์ ์ํ๋ ๋งํผ ์ฐ์ด์ฃผ์๋ค.
๐ก ํผ๋๋ฐฑ
- ๊ฐ์ ๋ฌธ์ ๋ฐ๋ณต ์ถ๋ ฅ์ ์ํด์๋ repeating์ ์ ์ฉํ์!
- repeating ์ฌ์ฉํ๋ while๋ฌธ์ด ํ์์์ ๋ฟ๋ง ์๋๋ผ, joined๋ ์ฌ์ฉํ ํ์๊ฐ ์์ด์ง๋ค.
- suffix ํจ์์ ์กด์ฌ์ ๋ํด์ ์๊ฒ ๋์๋ค. suffix, prefix ๊ฐ์ ํจ์๋ค์ ๊ฐ๋ ์ ์ ๋ฆฌํด๋ด์ผ๊ฒ ๋ค.
๐ [ ์ถ๊ฐ ] 1์ฃผ์ผ ํ ๋ค์ ํ์ด๋ณด๊ธฐ
func solution(_ phone_number:String) -> String {
var result = [String]()
result.append(String(repeating: "*", count: phone_number.count-4))
return result.joined() + phone_number.suffix(4)
}
- repeating ์ฌ์ฉํ์ฌ *๋ฅผ ์ ์ฐ์ด์ฃผ์๊ณ , suffix ์ฌ์ฉํ์ฌ ๋งจ ๋ค 4์๋ฆฌ ์๋ฅผ ๊ตฌํด์ฃผ์๋ค.
- joined๋ก * ์ฐ์ ๋ฐฐ์ด์ ์ถ๋ ฅํด์ฃผ์๋๋ฐ, ์์ ์ธ์์ ์ธ ํ์ด์ฒ๋ผ ๊ทธ๋ฅ String์ผ๋ก ๋ฌถ์ด ์ถ๋ ฅํด์ค๋ ๋๊ฒ ๋ค.
- ์ฒซ ๋ฒ์งธ ํ์ด๋ณด๋ค ํจ์ฌ ๊ฐ๊ฒฐํด์ก๊ณ , ๊ฐ๋ ์ฑ๋ ์ข์์ง ๋ฏ ํ๋ค!
โ๐ [ ๋! ์ถ๊ฐ ] 1์ฃผ์ผ ํ ๋ ๋ค์ ํ์ด๋ณด๊ธฐ
func solution3(_ phone_number:String) -> String {
var arr = Array(phone_number)
for i in 0..<phone_number.count-4 { arr[i] = "*" }
return String(arr)
}
- suffix๊ฐ์ ํจ์๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ์ง ์๊ณ ํ์๋ค.
- ์ฃผ์ด์ง ์ ํ๋ฒํธ์ ๊ฐ์ var ๋ฐฐ์ด์ ํ๋ ๋ง๋ค๊ณ , ๋ค 4๊ธ์๋ฅผ ์ ์ธํ ๊ธ์๋ค๋ง *๋ก ์นํํด์ฃผ์๋ค.
- ๊ตณ์ด ํ์ํ์ง ์์ ํจ์๋ฅผ ์ ์ธํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ง์์ด ํธ์ํด์ง๋ค,,
๋ฌธ์
https://programmers.co.kr/learn/courses/30/lessons/12948
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] ์ง์ฌ๊ฐํ ๋ณ์ฐ๊ธฐ Programmers(Lv.1) (0) | 2021.06.06 |
---|---|
[Swift Algorithm] ํ๋ ฌ์ ๋ง์ Programmers(Lv.1) (0) | 2021.06.06 |
[Swift Algorithm] ํ์ค๋ ์ Programmers(Lv.1) (0) | 2021.06.06 |
[Swift Algorithm] x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์ Programmers(Lv.1) (0) | 2021.06.06 |
[Swift Algoritm] ํ๊ท ๊ตฌํ๊ธฐ Programmers(Lv.1) (0) | 2021.06.05 |
๋๊ธ