https://school.programmers.co.kr/learn/courses/30/lessons/134240?language=swift
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฌธ์ ์ ๋ฆฌ
1. ๋ฌธ์ ์๊ตฌ์ฌํญ ์ ์
2๋ช
์ ์ ์๋ค์ด ๋ํ์์ ์ฑ
์ ์์ชฝ์์ ๊ฐ์ด๋ฐ๋ฅผ ํฅํด ์์์ ๋จน๋ ๋๊ฒฐ์ ํจ.
์น๋ฆฌ ์กฐ๊ฑด: ์ค์์ ์๋ ๋ฌผ์ ๋จผ์ ๋จน๋ ์ ์
ํ๊ฒฝ: ๋ ์ ์๊ฐ ๋จน๋ ์์์ ์ข
๋ฅ์ ์์ด ๊ฐ์์ผ ํจ.
ํ๊ฒฝ: ๋ ์ ์๊ฐ ์์์ ๋จน๋ ์์๋ ๊ฐ์์ผ ํจ.
ํ๊ฒฝ: ์นผ๋ก๋ฆฌ๊ฐ ๋ฎ์ ์์์ ๋จผ์ ๋จน์ ์ ์๊ฒ ๋ฐฐ์น.
ํ๊ฒฝ: ์์
์ด๊ฐ ์ค๋นํด์จ ์์ ์ค ๋ช๊ฐ๋ ๋ํ์ ์ฌ์ฉํ์ง ๋ชปํจ.
=> ๊ตฌํ ๊ฒ: ์์์ ๋ฐฐ์น string๊ฐ
2. ์ ์ฝ์ฌํญ
2 ≤ food์ ๊ธธ์ด ≤ 9
1 ≤ food์ ๊ฐ ์์ ≤ 1,000
food์๋ ์นผ๋ก๋ฆฌ๊ฐ ์ ์ ์์๋๋ก ์์์ ์์ด ๋ด๊ฒจ ์์ต๋๋ค.
food[0]์ ์์
์ด๊ฐ ์ค๋นํ ๋ฌผ์ ์์ด๋ฉฐ, ํญ์ 1์
๋๋ค.
food[i]๋ i๋ฒ ์์์ ์์
๋๋ค.
์ ๋ต์ ๊ธธ์ด๊ฐ 3 ์ด์์ธ ๊ฒฝ์ฐ๋ง ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋๋ค.
3. ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์๊ฐ๋ณต์ก๋ ํ์ธ
ํ๊ธฐ์์ผ๋ก๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์๊ฐ ์ ํ ์์
4. ํ์ด๋ฐฉ๋ฒ
0์ ์ผ์ชฝ ๋ฐ ๊ตฌํ๊ธฐ + "0" + 0์ ์ผ์ชฝ.reverse
0์ ์ผ์ชฝ ๋ฐ ๊ตฌํ๋ ๋ฐฉ๋ฒ: food ๋ฐฐ์ด์ ์ํํ๋ฉฐ 2๋ก ๋๋ ๊ฐ๋งํผ result ๋ฐฐ์ด์ ๋ํ๊ธฐ
5. ๋ณต์ก๋๋ณด๊ณ ๋ค์ ํ์ด ๊ณ ๋ฏผ
์๋ต
6. ์ฃ์ง ํ์ธ
์๋ต
ํ์ด 1.
import Foundation
func solution(_ food:[Int]) -> String {
var result = ""
for i in 1..<food.count {
if food[i] >= 2 {
for re in 0..<food[i] / 2 {
result += String(i)
}
}
}
return result + "0" + result.reversed()
}
์๊ฐ์ด๊ณผ๊ฐ ๋์ ์ด๋์ ์ค๋๊ฑธ๋ ธ์๊น ๋ค์ ๋ดค๋๋ฐ, ๋ฐ๋ณต๋ฌธ ๋ด๋ถ์์ String(i)๋ฅผ food[i] / 2 ๋งํผํ๊ณ ์์๋๊ฒ ๋ฌธ์ ๊ฐ ์๋์์๊น ์ถ์๋ค. food[i]์ 1000์ด ๋ค์ด๊ฐ ์ ์์ผ๋ 2๋ฅผ ๋๋๋ฉด 500๋ฒ์ด๊ณ , food ๊ฐ์๋งํผ ๊ทธ ์ธ๋ถ์์ ๋ฐ๋ณตํ๋ ์ต๋ 500*9 = 4500๋ฒ์ ํ๋ณํํ๋ ๊ฒ์ด๋ค. ใ ใ ,ใ ใ ํ๋ณํํ๊ณ ๋ํ๊ณ ~ ํ๋ณํํ๊ณ ๋ํ๊ณ ~
์๊ณ ๋ฆฌ์ฆ ์์ฒด๋ฅผ ๋ค์ ์๊ฐํด๋ณผ๊น ํ๋ค๊ฐ ์ฝ๊ฒ ์ ๊ทผํด์ ํ๋ณํ๋ง ํ ๋ฒ ํ๋๋ก ์์ ํด์ ํ ์คํธํ๋ค.
ํ์ด 2. ํ๋ณํ ์์
func solution(_ food:[Int]) -> String {
var result = ""
for i in 1..<food.count {
let strI = String(i)
for re in 0..<food[i] / 2 {
result += strI
}
}
return result + "0" + result.reversed()
}
๊ฒฐ๊ณผ๊ฐ์ด ์ ์ฒด์ ์ผ๋ก ์ค์ด๋ ๊ฒ ์๋๋ผ ๋ ๊ธธ์ด์ง๊ฒ๋, ๋ ์งง์์ง ๊ฒ๋ ์์ง๋ง, ๋ชจ๋ 0.80ms ๋ด์ธ๋ก ํต๊ณผํ๋ค.
ํ์ด 3.
์ฌ์ค ์ฒ์์ ๋ฐ๋ณต๋ฌธ์ผ๋ก result๋ฅผ ์ ๋ฐ์ดํธํ๋๊ฒ ์๋๋ผ String์ repeat๊ด๋ จํ ๋ฉ์๋๋ฅผ ์ฐพ์๋ณด๊ณ ์ถ์๋๋ฐ, ์๋ ๊ฑธ ๋ฐํ์ผ๋ก ํด๋ณด์!๋ ๋ง์์ผ๋ก ๋ฐ๋ณต๋ฌธ์ ์ผ๊ณ , ๋ฌธ์ ๋ ํด๊ฒฐํ์ผ๋ ๋ฌธ์์ด์ ๋ฐ๋ณตํ์ฌ ์ด๊ธฐํํ๋ ๋ฉ์๋๋ฅผ ๋ ์ฐพ์๋ณด์๋ค.
String(repeating: "OK" count: 5)
์ฐพ์๋ณด๋ ์ด๋ฌํ ์ด๊ธฐํ ๋ฉ์๋๊ฐ ์์๋ค.
Array์ ์ด๊ธฐํ ๋ฐฉ์์๋ ์ ์ฌํ๊ฒ ์์๋๋ฐ, String์๋ ์์๋ ๊ฒ์ด๋ค.
func solution(_ food:[Int]) -> String {
var result = ""
for i in 1..<food.count {
if food[i] >= 2 {
result += String(repeating: String(i), count: food[i]/2)
}
}
return result + "0" + result.reversed()
}
์ ์ฒด์ ์ผ๋ก ์๊ฐ์ด ์ค์ด๋ ๊ฑธ ์ ์ ์๋ค ! !
์ด์ ๋ถํฐ ์ ์ฉํ ๊ฒ์ !
๋น๊ต
๋ณต์กํ๊ณ ์ด๋ ค์ด ๋ฌธ์ ๋ ์๋์์ง๋ง, ๋น๊ต๋ง ํด๋ณด๊ณ ๋๋ด์ผ๊ฒ ๋ค.
๋๋ผ๋งํฑํ์ง ์์๋ ๋๋ถ๋ถ 3๋ฒ์ด ์กฐ๊ธ์ฉ ์๊ฐ์ด ์ ๊ฒ ์์๋๋ ๊ฑธ ์ ์ ์๋ค.
๊ฒฐ๋ก ์ String(repeating: "OK" count: 5) ์์๋์ ! ๋ ๋ง์ด๋ค.
์ธ์ ๊ฐ ์ ์ฉํ๊ฒ ์ธ ๊ฒ์ด๋ค :)
'๐ Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค Lv2. ํํ - ๋ฌธ์ ํ์ด (0) | 2024.09.10 |
---|