๐ ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ๋งํฌ
โ๐ป ๋ฌธ์ ํ์ด Github ๋งํฌ
๋ฌธ์ ์ค๋ช
์ด์์ฒด์ ์ ์ญํ ์ค ํ๋๋ ์ปดํจํฐ ์์คํ ์ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์ ์์๋ ์ด์์ฒด์ ๊ฐ ๋ค์ ๊ท์น์ ๋ฐ๋ผ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ ๊ฒฝ์ฐ ํน์ ํ๋ก์ธ์ค๊ฐ ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง ์์๋ด๋ฉด ๋ฉ๋๋ค.
1. ์คํ ๋๊ธฐ ํ(Queue)์์ ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค ํ๋๋ฅผ ๊บผ๋ ๋๋ค.
2. ํ์ ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค ์ค ์ฐ์ ์์๊ฐ ๋ ๋์ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค๋ฅผ ๋ค์ ํ์ ๋ฃ์ต๋๋ค.
3. ๋ง์ฝ ๊ทธ๋ฐ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค๋ฅผ ์คํํฉ๋๋ค.
3.1 ํ ๋ฒ ์คํํ ํ๋ก์ธ์ค๋ ๋ค์ ํ์ ๋ฃ์ง ์๊ณ ๊ทธ๋๋ก ์ข ๋ฃ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ํ๋ก์ธ์ค 4๊ฐ [A, B, C, D]๊ฐ ์์๋๋ก ์คํ ๋๊ธฐ ํ์ ๋ค์ด์๊ณ , ์ฐ์ ์์๊ฐ [2, 1, 3, 2]๋ผ๋ฉด [C, D, A, B] ์์ผ๋ก ์คํํ๊ฒ ๋ฉ๋๋ค.
ํ์ฌ ์คํ ๋๊ธฐ ํ(Queue)์ ์๋ ํ๋ก์ธ์ค์ ์ค์๋๊ฐ ์์๋๋ก ๋ด๊ธด ๋ฐฐ์ด priorities์, ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง ์๊ณ ์ถ์ ํ๋ก์ธ์ค์ ์์น๋ฅผ ์๋ ค์ฃผ๋ location์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ํด๋น ํ๋ก์ธ์ค๊ฐ ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- priorities์ ๊ธธ์ด๋ 1 ์ด์ 100 ์ดํ์
๋๋ค.
- priorities์ ์์๋ 1 ์ด์ 9 ์ดํ์ ์ ์์ ๋๋ค.
- priorities์ ์์๋ ์ฐ์ ์์๋ฅผ ๋ํ๋ด๋ฉฐ ์ซ์๊ฐ ํด ์๋ก ์ฐ์ ์์๊ฐ ๋์ต๋๋ค.
- location์ 0 ์ด์ (๋๊ธฐ ํ์ ์๋ ํ๋ก์ธ์ค ์ - 1) ์ดํ์ ๊ฐ์ ๊ฐ์ง๋๋ค.
- priorities์ ๊ฐ์ฅ ์์ ์์ผ๋ฉด 0, ๋ ๋ฒ์งธ์ ์์ผ๋ฉด 1 … ๊ณผ ๊ฐ์ด ํํํฉ๋๋ค.
์ ์ถ๋ ฅ ์
priorities | location | return |
[2, 1, 3, 2] | 2 | 1 |
[1, 1, 9, 1, 1, 1] | 0 | 5 |
๋ฌธ์ ํ์ด
๋์ ํ์ด
import Foundation
func solution(_ priorities:[Int], _ location:Int) -> Int {
var priorities = priorities
var answer = location
var max = priorities.count
var current = 0
while !priorities.isEmpty {
if priorities.contains(where: { $0 > priorities[0] }) {
priorities.append( priorities[0] )
priorities.removeFirst()
answer -= 1
if answer < current {
answer = max - 1
}
}else {
current += 1
priorities.removeFirst()
if answer < current{
break
}
}
}
return answer + 1
}
ํ์ฌ ์์นํ ๋ฐฐ์ด์ ๊ฐ๋ณด๋ค ํฐ ๊ฐ์ด ์๋ค๋ฉด, ํด๋น ๋ฐฐ์ด์ ๊ฐ์ ๋งจ ๋ค๋ก ๋ณด๋ ๋๋ค.
ํ์ฌ ์์นํ ๋ฐฐ์ด์ ๊ฐ๋ณด๋ค ํฐ ๊ฐ์ด ์๋ค๋ฉด, ํด๋น ํ๋ก์ธ์ค๋ ๋ง๋ ์์๋๋ก ์์นํด์๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์์ ์์ฑ๋๋ค.
๋ต์ ๋์ถํด๋ด๊ธฐ ์ํด์๋ ํด๋น index๊ฐ ์ด๋ป๊ฒ ๋ณํํ๋์ง๋ฅผ ๋ฐ๋ผ๊ฐ์ผํฉ๋๋ค. ๋ง์ง๋ง ๋ฐฐ์ด๋ก ์ด๋ํ๋ค๋ฉด, ํด๋น index ๊ฐ์ ๊ทธ์ ๋ง๊ฒ ๋ณํ์์ผ์ฃผ๊ณ , ์ฌ๋ฐ๋ฅธ ์์น์ ๊ณ ์ ์ด ๋์๋ค๋ฉด, ๊ทธ ์ฆ์ ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋๊ฐ ๋ต์ ๋์ถํ๋๋ก ํ์ฌ ์คํ์๊ฐ์ ์ค์์ต๋๋ค.
์ค์ํ ๊ฐ๋
priorities.contains(where: { ์กฐ๊ฑด ํด๋ก์ ํจ์ })
contains ํจ์์ where ์ ์ ์ด์ฉํ ํด๋ก์ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.