๐Ÿ“ Algorithm/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv1. ํ‘ธ๋“œ ํŒŒ์ดํŠธ ๋Œ€ํšŒ - ๋ฌธ์ œ ํ’€์ด

JINiOS 2024. 9. 6. 18:11
728x90

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()
}

 

์ „์ฒด์ ์œผ๋กœ ์‹œ๊ฐ„์ด ์ค„์–ด๋“  ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค ! !

์ด์ œ๋ถ€ํ„ฐ ์• ์šฉํ• ๊ฒŒ์š” !

 

๋น„๊ต

๋ณต์žกํ•˜๊ณ  ์–ด๋ ค์šด ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ, ๋น„๊ต๋งŒ ํ•ด๋ณด๊ณ  ๋๋‚ด์•ผ๊ฒ ๋‹ค.

1) ๋ฐ˜๋ณต๋ฌธ ๋‚ด๋ถ€์—์„œ ํ˜•๋ณ€ํ™˜ํ•˜๋ฉฐ ์—…๋ฐ์ดํŠธ, 2) ํ˜•๋ณ€ํ™˜ํ•œ ๊ฐ’์œผ๋กœ ๋ฐ˜๋ณตํ•˜์—ฌ ์—…๋ฐ์ดํŠธ, 3) String(repeating: count:) ํ™œ์šฉํ•˜์—ฌ ์ดˆ๊ธฐํ™” ๋ฐ ์—…๋ฐ์ดํŠธ


๋“œ๋ผ๋งˆํ‹ฑํ•˜์ง„ ์•Š์•„๋„ ๋Œ€๋ถ€๋ถ„ 3๋ฒˆ์ด ์กฐ๊ธˆ์”ฉ ์‹œ๊ฐ„์ด ์ ๊ฒŒ ์†Œ์š”๋˜๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๊ฒฐ๋ก ์€ String(repeating: "OK" count: 5) ์•Œ์•„๋‘์ž ! ๋Š” ๋ง์ด๋‹ค.

์–ธ์  ๊ฐ„ ์œ ์šฉํ•˜๊ฒŒ ์“ธ ๊ฒƒ์ด๋‹ค :)

728x90