MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํ–„๋ฒ„๊ฑฐ ๋งŒ๋“ค๊ธฐ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/programmers

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํ–„๋ฒ„๊ฑฐ ๋งŒ๋“ค๊ธฐ

MUKER 2023. 2. 3. 17:03
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

๋ฌธ์ œ ํ‘ธ๋Š” ๋ฐ ์žˆ์–ด ๋„์›€์ด ๋˜๋„๋ก ๋‚˜์˜ ํ’€์ด์™€ ๊ฐœ์„ ๋œ ํ’€์ด๋ฅผ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.
๋˜ํ•œ ํ’€์ด ํ›„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด๊ณ  ์ฐธ๊ณ ํ• ๋งŒํ•œ ํ’€์ด๋„ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

- ๋ฌธ์ œ์— ๋”ฐ๋ผ ๋‚˜์˜ ํ’€์ด๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ํ•ด๋‹น ํ’€์ด๋“ค์€ ํ’€์ด ์ค‘ ํ•˜๋‚˜์ผ ๋ฟ ์ตœ์„ ์˜ ํ’€์ด๋Š” ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


 

๋ฌธ์ œ ์„ค๋ช…

 

ํ–„๋ฒ„๊ฑฐ ์žฌ๋ฃŒ ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๋ฐฐ์—ด ์ค‘ ์—ฐ์†์ ์œผ๋กœ [๋นต, ์•ผ์ฑ„, ๊ณ ๊ธฐ, ๋นต]์ด ๋‚˜์˜จ๋‹ค๋ฉด

ํ–„๋ฒ„๊ฑฐ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

1: ๋นต, 2: ์•ผ์ฑ„, 3: ๊ณ ๊ธฐ์ž…๋‹ˆ๋‹ค.

 

[2, 1, 1, 2, 3, 1, 2, 3, 1]์˜ ๋ฐฐ์—ด์ด ์ฃผ์–ด์งˆ ๋•Œ

3๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ [1,2,3,1]์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ–„๋ฒ„๊ฑฐ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉฐ

ํ•ด๋‹น ๋ฒ”์œ„๋ฅผ ์ง€์šฐ๊ฒŒ ๋œ๋‹ค๋ฉด [2,1,2,3,1]์ด ๋‚จ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋‚จ์€ ๋ฐฐ์—ด์—์„œ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ

ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” [1,2,3,1]์ด ๋งŒ๋“ค์–ด์ ธ์„œ

2๊ฐœ์˜ ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


 

๋‚˜์˜ ํ’€์ด

import Foundation

func solution(_ ingredient:[Int]) -> Int {
    var burger = ingredient
    var count = 0
    var start = 0
    while burger.count >= 4 {
        let temp = count
        for i in start..<burger.count-3 {
            if burger[i...i+3] == [1,2,3,1] {
                burger[i...i+3] = []
                count += 1
                if burger.count <= 6 { break }
                start = i-2
                break
            }
        }
        if temp == count { break }
    }
    return count
}

 

์ €๋Š” 4๊ฐœ์˜ ๊ณต๊ฐ„์„ ๊ฐ€์ง„ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด

burger์žฌ๋ฃŒ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ [1,2,3,1]์— ํ•ด๋‹นํ•˜๋Š”์ง€ ํƒ์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ [1,2,3,1]์— ํ•ด๋‹น๋˜๋ฉด, ํ•ด๋‹น ์ธ๋ฑ์Šค๋Š” ์ง€์›Œ์ฃผ๊ณ  count += 1์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ [1,2,3,1]์„ ํƒ์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ํ•ด๋‹น ์กฐ๊ฑด๋งŒ์œผ๋กœ๋Š”

์‹œ๊ฐ„์ œํ•œ์— ๊ฑธ๋ ค ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ํ–„๋ฒ„๊ฑฐ ๋ฐฐ์—ด์„ ๋บ€ ํ›„

์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜์ง€ ์•Š๊ณ 

 

๋น ์ง„ index์—์„œ 2์นธ๋งŒ ๋’ค๋กœ ๊ฐ€ ๋‹ค์‹œ ํƒ์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์†Œ 2์นธ์„ ๋’ค๋กœ๊ฐ€์•ผ ์™„๋ฒฝํ•˜๊ฒŒ  ๋‹ค์‹œ ํ–„๋ฒ„๊ฑฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ธ๋ฑ์Šค๊ฐ€ ์Œ์ˆ˜๋กœ ๋‚˜์˜ค๋Š”๊ฑธ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด

burger์˜ ์นด์šดํŠธ๊ฐ€ 6๋ณด๋‹ค ์ž‘์„ ๋•Œ๋Š”

์ธ๋ฑ์Šค๋ฅผ ๋’ค๋กœ๋ณด๋‚ด ํƒ์ƒ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

(๋งŒ์•ฝ 5์˜ count๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ

burger[1... 4]๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  start๊ฐ’์ธ 1์— -2๋ฅผ ํ•˜๋ฉด ์Œ์ˆ˜๊ฐ€ ๋‚˜์™€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค)

 

๋ฏธ๋ฆฌ count๊ฐ’์„ ๋ณต์‚ฌํ•ด ๋†“์€ temp๊ฐ’์ด

burger๋ฐฐ์—ด์„ ํƒ์ƒ‰ํ•˜๊ณ ๋„ ๊ฐ™๋‹ค๋ฉด

๋” ์ด์ƒ ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—

while๋ฌธ์„ ๋‚˜์˜ต๋‹ˆ๋‹ค.

 


 

์ฐธ๊ณ ํ• ๋งŒํ•œ ํ’€์ด

import Foundation

func solution(_ ingredient:[Int]) -> Int {
    var stacks: [Int] = []
    var count: Int = 0
    for ingredient in ingredient {
        stacks.append(ingredient)
        let suffix = stacks.suffix(4)
        if suffix == [1,2,3,1] {
            count += 1
            stacks.removeLast(4)
        }
    }
    return count
}

 

.suffix(4)๋Š”

๋’ค์—์„œ๋ถ€ํ„ฐ 4๊ฐœ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

suffix() ํ•จ์ˆ˜๋ฅผ ์ผ์„ ๋•Œ ์ข‹์€ ์ ์ด

๋ฐฐ์—ด์— 2๊ฐœ์˜ ๊ฐ’ ๋ฐ–์— ์—†๋‹ค ํ•ด๋„

suffix(4)๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๊ณ 

2๊ฐœ์˜ ๊ฐ’๋งŒ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ–ˆ์„ ๋•Œ๋Š”

์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์กฐ๊ฑด์ด ํ•„์š”ํ–ˆ๋Š”๋ฐ

suffix()๋ฅผ ์“ฐ๋ฉด ๋ถˆํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๊น”๋”ํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด ๋ณด์ž…๋‹ˆ๋‹ค.