MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์‚ผ๊ฐ ๋‹ฌํŒฝ์ด ๋ณธ๋ฌธ

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

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์‚ผ๊ฐ ๋‹ฌํŒฝ์ด

MUKER 2023. 5. 2. 23:13
 

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

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

programmers.co.kr


์„ฑ๊ณต ํ’€์ด

func solution(_ n:Int) -> [Int] {
  var (y,x) = (n-1,0) // ์ขŒํ‘œ ์„ค์ •
  var count = n // ๋Œ€์ž…ํ•  ์ˆซ์ž
  let sum = (1...n).reduce(0,+) // 1~n๊นŒ์ง€ ๊ฐ๊ฐ ์˜ ํ•ฉ (breakํ•  ๋•Œ ํ•„์š”)
  var arr = (0..<n).map { // ๋ฐฐ์—ด์˜ ์œค๊ณฝ ์ดˆ๊ธฐํ™”
    [$0+1] + Array(repeating: -1, count: n-$0-1) + Array(repeating: 0, count: $0)
  }
  
while true {
  
  while x < n-1 && arr[y][x+1] == 0 { // ์˜ค๋ฅธ์ชฝ์œผ๋กœ
    count += 1
    arr[y][x+1] = count
    x += 1
  }
  
  while y > 0 && arr[y-1][x] == 0 { // ์œ„์ชฝ์œผ๋กœ
    count += 1
    arr[y-1][x] = count
    y -= 1
  }
  
  while y < n-1 && arr[y+1][x-1] == 0 { // ๋Œ€๊ฐ์„  ์•„๋ž˜๋กœ
    count += 1
    arr[y+1][x-1] = count
    y += 1; x -= 1
  }
  
  if count == sum { break } else { continue } // count๊ฐ€ sum๊ณผ ๊ฐ™๋‹ค๋ฉด break ์•„๋‹ˆ๋ฉด continue
}
  arr.forEach { print($0) }
  return arr.flatMap { $0 }.filter { $0 > 0 }
}

ํ’€์ด ํ‚ค์›Œ๋“œ

๊ตฌํ˜„