ํ๋ก๊ทธ๋๋จธ์ค LV.1 ๋ชจ์
ํ๋ฒ๊ฑฐ ๋ง๋ค๊ธฐ
๋ฌธ์ ์ค๋ช
ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ์์ ์ผ์ ํ๋ ์์๋ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํ๋ ์ผ์ ํฉ๋๋ค. ํจ๊ป ์ผ์ ํ๋ ๋ค๋ฅธ ์ง์๋ค์ด ํ๋ฒ๊ฑฐ์ ๋ค์ด๊ฐ ์ฌ๋ฃ๋ฅผ ์กฐ๋ฆฌํด ์ฃผ๋ฉด ์กฐ๋ฆฌ๋ ์์๋๋ก ์์์ ์์ ์๋์๋ถํฐ ์๋ก ์์ด๊ฒ ๋๊ณ , ์์๋ ์์์ ๋ง๊ฒ ์์ฌ์ ์์ฑ๋ ํ๋ฒ๊ฑฐ๋ฅผ ๋ฐ๋ก ์ฎ๊ฒจ ํฌ์ฅ์ ํ๊ฒ ๋ฉ๋๋ค. ์์๊ฐ ์ผํ๋ ๊ฐ๊ฒ๋ ์ ํด์ง ์์(์๋์๋ถํฐ, ๋นต – ์ผ์ฑ – ๊ณ ๊ธฐ - ๋นต)๋ก ์์ธ ํ๋ฒ๊ฑฐ๋ง ํฌ์ฅ์ ํฉ๋๋ค. ์์๋ ์์ด ๊ต์ฅํ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์์๊ฐ ํฌ์ฅํ๋ ๋์ ์ ์ฌ๋ฃ๊ฐ ์ถ๊ฐ์ ์ผ๋ก ๋ค์ด์ค๋ ์ผ์ ์์ผ๋ฉฐ, ์ฌ๋ฃ์ ๋์ด๋ ๋ฌด์ํ์ฌ ์ฌ๋ฃ๊ฐ ๋์ด ์์ฌ์ ์ผ์ด ํ๋ค์ด์ง๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์์์ ์์ ์์ด๋ ์ฌ๋ฃ์ ์์๊ฐ [์ผ์ฑ, ๋นต, ๋นต, ์ผ์ฑ, ๊ณ ๊ธฐ, ๋นต, ์ผ์ฑ, ๊ณ ๊ธฐ, ๋นต] ์ผ ๋, ์์๋ ์ฌ์ฏ ๋ฒ์งธ ์ฌ๋ฃ๊ฐ ์์์ ๋, ์ธ ๋ฒ์งธ ์ฌ๋ฃ๋ถํฐ ์ฌ์ฏ ๋ฒ์งธ ์ฌ๋ฃ๋ฅผ ์ด์ฉํ์ฌ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํ๊ณ , ์ํ ๋ฒ์งธ ์ฌ๋ฃ๊ฐ ์์์ ๋, ๋ ๋ฒ์งธ ์ฌ๋ฃ์ ์ผ๊ณฑ ๋ฒ์งธ ์ฌ๋ฃ๋ถํฐ ์ํ ๋ฒ์งธ ์ฌ๋ฃ๋ฅผ ์ด์ฉํ์ฌ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํฉ๋๋ค. ์ฆ, 2๊ฐ์ ํ๋ฒ๊ฑฐ๋ฅผ ํฌ์ฅํ๊ฒ ๋ฉ๋๋ค.
์์์๊ฒ ์ ํด์ง๋ ์ฌ๋ฃ์ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด ingredient๊ฐ ์ฃผ์ด์ก์ ๋, ์์๊ฐ ํฌ์ฅํ๋ ํ๋ฒ๊ฑฐ์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์์ค.
์ ํ ์ฌํญ
- 1 ≤ ingredient์ ๊ธธ์ด ≤ 1,000,000
- ingredient์ ์์๋ 1, 2, 3 ์ค ํ๋์ ๊ฐ์ด๋ฉฐ, ์์๋๋ก ๋นต, ์ผ์ฑ, ๊ณ ๊ธฐ๋ฅผ ์๋ฏธํฉ๋๋ค.
์ ์ถ๋ ฅ ์
ingredient | result |
[2, 1, 1, 2, 3, 1, 2, 3, 1] | 2 |
[1, 3, 2, 1, 2, 1, 3, 1, 2] | 0 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ์์๊ฐ ํฌ์ฅํ ์ ์๋ ํ๋ฒ๊ฑฐ๊ฐ ์์ต๋๋ค.
์ ์ถ
import Foundation
func solution(_ ingredient:[Int]) -> Int {
var answer = 0
var stack = [Int]()
for i in ingredient{
stack.append(i)
if stack.count > 3 && (stack[stack.count-4...stack.count-1] == [1,2,3,1]){
stack.removeLast(4)
answer += 1
}
}
return answer
}
ํ๋ฒ๊ฑฐ์ ์ฌ๋ฃ๋ฅผ ๋ด์ ๋ฐฐ์ด ingredient์์ ์์๋ค์ ์์๋๋ก stack์ ์ ์ฅํ๋ค.
stack์ ํฌ๊ธฐ๊ฐ 3 ์ด์์ด๊ณ , stack์์ ๋ง์ง๋ง 4๊ฐ์ ์์๊ฐ [1, 2, 3, 1]์ผ ๋ (๋นต-์ผ์ฑ-๊ณ ๊ธฐ-๋นต) stack์์ ๋ง์ง๋ง 4๊ฐ์ ์์๋ฅผ ์ญ์ ํ๊ณ , answer๋ณ์๋ฅผ 1 ์ฆ๊ฐ์ํจ๋ค.
๋ชจ๋ ์์๋ฅผ ํ์ธํ ํ, answer ๋ณ์๋ฅผ ๋ฐํํ๋ค.
๋ค๋ฅธ ํ์ด
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
}
๋ฐฐ์ด์ ์์๋ฅผ stack์ ์ถ๊ฐํ๋ค.
suffix ์์์ stack ๋ฐฐ์ด์์ ๋ง์ง๋ง 4๊ฐ์ ์์๋ค์ ์ ์ฅํ๋ค.
suffix๊ฐ [1, 2, 3, 1]์ด๋ผ๋ฉด, count ๋ณ์๋ฅผ 1๋ฅผ ์ฆ๊ฐ์ํค๊ณ ๋ง์ง๋ง 4๊ฐ์ ์์๋ฅผ ์ญ์ ํ๋ค.
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ๊ณผ์ผ ์ฅ์ (0) | 2023.03.13 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ํธ๋ ํ์ดํธ ๋ํ (0) | 2023.03.12 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ์น์์ด(2) (0) | 2023.03.10 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ์ฝ๋ผ ๋ฌธ์ (0) | 2023.03.09 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ์ผ์ด์ฌ (0) | 2023.03.09 |