๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โŒจ๏ธ Language/swift

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ฐ”ํƒ•ํ™”๋ฉด ์ •๋ฆฌ

by hyebin (Helia) 2023. 3. 19.
๋ฐ˜์‘ํ˜•
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ชจ์Œ

๋ฐ”ํƒ•ํ™”๋ฉด ์ •๋ฆฌ

๋ฌธ์ œ ์„ค๋ช…

์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋จธ์“ฑ์ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ๋‚˜์ค‘์— ๋‹ค์‹œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ปดํ“จํ„ฐ ๋ฐ”ํƒ•ํ™”๋ฉด์— ์•„๋ฌด ์œ„์น˜์—๋‚˜ ์ €์žฅํ•ด ๋‘ก๋‹ˆ๋‹ค. ์ €์žฅํ•œ ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์ง€๋ฉด์„œ ๋จธ์“ฑ์ด๋Š” ๋ณธ์ธ์˜ ์ปดํ“จํ„ฐ ๋ฐ”ํƒ•ํ™”๋ฉด์ด ๋„ˆ๋ฌด ์ง€์ €๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ์ž‘์„ฑํ–ˆ๋˜ ์ฝ”๋“œ๋Š” ๊ทธ ๋ฌธ์ œ์— ๊ฐ€์„œ ๋‹ค์‹œ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅํ•ด ๋‘” ํŒŒ์ผ๋“ค์„ ์ „๋ถ€ ์‚ญ์ œํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ปดํ“จํ„ฐ ๋ฐ”ํƒ•ํ™”๋ฉด์€ ๊ฐ ์นธ์ด ์ •์‚ฌ๊ฐํ˜•์ธ ๊ฒฉ์žํŒ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ์ปดํ“จํ„ฐ ๋ฐ”ํƒ•ํ™”๋ฉด์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ธ ๋ฌธ์ž์—ด ๋ฐฐ์—ด wallpaper๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ํŒŒ์ผ๋“ค์€ ๋ฐ”ํƒ•ํ™”๋ฉด์˜ ๊ฒฉ์ž์นธ์— ์œ„์น˜ํ•˜๊ณ  ๋ฐ”ํƒ•ํ™”๋ฉด์˜ ๊ฒฉ์ž์ ๋“ค์€ ๋ฐ”ํƒ•ํ™”๋ฉด์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ์œ„๋ฅผ (0, 0)์œผ๋กœ ์‹œ์ž‘ํ•ด (์„ธ๋กœ ์ขŒํ‘œ, ๊ฐ€๋กœ ์ขŒํ‘œ)๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋นˆ์นธ์€ ".", ํŒŒ์ผ์ด ์žˆ๋Š” ์นธ์€ "#"์˜ ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋“œ๋ž˜๊ทธ๋ฅผ ํ•˜๋ฉด ํŒŒ์ผ๋“ค์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ , ์„ ํƒ๋œ ํŒŒ์ผ๋“ค์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จธ์“ฑ์ด๋Š” ์ตœ์†Œํ•œ์˜ ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ–๋Š” ํ•œ ๋ฒˆ์˜ ๋“œ๋ž˜๊ทธ๋กœ ๋ชจ๋“  ํŒŒ์ผ์„ ์„ ํƒํ•ด์„œ ํ•œ ๋ฒˆ์— ์ง€์šฐ๋ ค๊ณ  ํ•˜๋ฉฐ ๋“œ๋ž˜๊ทธ๋กœ ํŒŒ์ผ๋“ค์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋“œ๋ž˜๊ทธ๋Š” ๋ฐ”ํƒ•ํ™”๋ฉด์˜ ๊ฒฉ์ž์  S(lux, luy)๋ฅผ ๋งˆ์šฐ์Šค ์™ผ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•œ ์ƒํƒœ๋กœ ๊ฒฉ์ž์  E(rdx, rdy)๋กœ ์ด๋™ํ•œ ๋’ค ๋งˆ์šฐ์Šค ์™ผ์ชฝ ๋ฒ„ํŠผ์„ ๋–ผ๋Š” ํ–‰๋™์ž…๋‹ˆ๋‹ค. ์ด๋•Œ, "์  S์—์„œ ์  E๋กœ ๋“œ๋ž˜๊ทธํ•œ๋‹ค"๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ณ  ์  S์™€ ์  E๋ฅผ ๊ฐ๊ฐ ๋“œ๋ž˜๊ทธ์˜ ์‹œ์ž‘์ , ๋์ ์ด๋ผ๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ์  S(lux, luy)์—์„œ ์  E(rdx, rdy)๋กœ ๋“œ๋ž˜๊ทธ๋ฅผ ํ•  ๋•Œ, "๋“œ๋ž˜๊ทธ ํ•œ ๊ฑฐ๋ฆฌ"๋Š” |rdx - lux| + |rdy - luy|๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์  S์—์„œ ์  E๋กœ ๋“œ๋ž˜๊ทธ๋ฅผ ํ•˜๋ฉด ๋ฐ”ํƒ•ํ™”๋ฉด์—์„œ ๋‘ ๊ฒฉ์ž์ ์„ ๊ฐ๊ฐ ์™ผ์ชฝ ์œ„, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜๋กœ ํ•˜๋Š” ์ง์‚ฌ๊ฐํ˜• ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด wallpaper = [".#...", "..#..", "...#."]์ธ ๋ฐ”ํƒ•ํ™”๋ฉด์„ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐ”ํƒ•ํ™”๋ฉด์—์„œ ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด S(0, 1)์—์„œ E(3, 4)๋กœ ๋“œ๋ž˜๊ทธํ•˜๋ฉด ์„ธ ๊ฐœ์˜ ํŒŒ์ผ์ด ๋ชจ๋‘ ์„ ํƒ๋˜๋ฏ€๋กœ ๋“œ๋ž˜๊ทธ ํ•œ ๊ฑฐ๋ฆฌ (3 - 0) + (4 - 1) = 6์„ ์ตœ์†Ÿ๊ฐ’์œผ๋กœ ๋ชจ๋“  ํŒŒ์ผ์„ ์„ ํƒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

(0, 0)์—์„œ (3, 5)๋กœ ๋“œ๋ž˜๊ทธํ•ด๋„ ๋ชจ๋“  ํŒŒ์ผ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋•Œ ๋“œ๋ž˜๊ทธ ํ•œ ๊ฑฐ๋ฆฌ๋Š” (3 - 0) + (5 - 0) = 8์ด๊ณ  ์ด์ „์˜ ๋ฐฉ๋ฒ•๋ณด๋‹ค ๊ฑฐ๋ฆฌ๊ฐ€ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.

๋จธ์“ฑ์ด์˜ ์ปดํ“จํ„ฐ ๋ฐ”ํƒ•ํ™”๋ฉด์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด wallpaper๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ๋ฐ”ํƒ•ํ™”๋ฉด์˜ ํŒŒ์ผ๋“ค์„ ํ•œ ๋ฒˆ์— ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œํ•œ์˜ ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ–๋Š” ๋“œ๋ž˜๊ทธ์˜ ์‹œ์ž‘์ ๊ณผ ๋์ ์„ ๋‹ด์€ ์ •์ˆ˜ ๋ฐฐ์—ด์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”. ๋“œ๋ž˜๊ทธ์˜ ์‹œ์ž‘์ ์ด (lux, luy), ๋์ ์ด (rdx, rdy)๋ผ๋ฉด ์ •์ˆ˜ ๋ฐฐ์—ด [lux, luy, rdx, rdy]๋ฅผ return ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ wallpaper์˜ ๊ธธ์ด ≤ 50
  • 1 ≤ wallpaper[i]์˜ ๊ธธ์ด ≤ 50
    • wallpaper์˜ ๋ชจ๋“  ์›์†Œ์˜ ๊ธธ์ด๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
  • wallpaper[i][j]๋Š” ๋ฐ”ํƒ•ํ™”๋ฉด์—์„œ i + 1ํ–‰ j + 1์—ด์— ํ•ด๋‹นํ•˜๋Š” ์นธ์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • wallpaper[i][j]๋Š” "#" ๋˜๋Š” "."์˜ ๊ฐ’๋งŒ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • ๋ฐ”ํƒ•ํ™”๋ฉด์—๋Š” ์ ์–ด๋„ ํ•˜๋‚˜์˜ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋“œ๋ž˜๊ทธ ์‹œ์ž‘์  (lux, luy)์™€ ๋์  (rdx, rdy)๋Š” lux < rdx, luy < rdy๋ฅผ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

wallpaper result
[".#...", "..#..", "...#."] [0, 1, 3, 4]
["..........", ".....#....", "......##..", "...##.....", "....#....."] [1, 3, 5, 8]
[".##...##.", "#..#.#..#", "#...#...#", ".#.....#.", "..#...#..", "...#.#...", "....#...."] [0, 0, 7, 9]
["..", "#."] [1, 0, 2, 1]

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ฌธ์ œ ์„ค๋ช…์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์€ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. (0, 1)์—์„œ (3, 4)๋กœ ๋“œ๋ž˜๊ทธํ•˜๋ฉด ๋ชจ๋“  ํŒŒ์ผ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ  ๋“œ๋ž˜๊ทธ ํ•œ ๊ฑฐ๋ฆฌ๋Š” 6์ด์—ˆ๊ณ , 6๋ณด๋‹ค ์ ์€ ๊ฑฐ๋ฆฌ๋กœ ๋ชจ๋“  ํŒŒ์ผ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [0, 1, 3, 4]๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • ์˜ˆ์ œ 2๋ฒˆ์˜ ๋ฐ”ํƒ•ํ™”๋ฉด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • (1, 3)์—์„œ (5, 8)๋กœ ๋“œ๋ž˜๊ทธํ•˜๋ฉด ๋ชจ๋“  ํŒŒ์ผ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋ณด๋‹ค ์ ์€ ์ด๋™๊ฑฐ๋ฆฌ๋กœ ๋ชจ๋“  ํŒŒ์ผ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ์ ์€ ์ด๋™์˜ ๋“œ๋ž˜๊ทธ๋กœ ๋ชจ๋“  ํŒŒ์ผ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ [1, 3, 5, 8]์„ return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

  • ์˜ˆ์ œ 3๋ฒˆ์˜ ๋ฐ”ํƒ•ํ™”๋ฉด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ํŒŒ์ผ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด์„  ๋ฐ”ํƒ•ํ™”๋ฉด์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ์œ„ (0, 0)์—์„œ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ (7, 9)๋กœ ๋“œ๋ž˜๊ทธํ•ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [0, 0, 7, 9]๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #4

  • ์˜ˆ์ œ 4๋ฒˆ์˜ ๋ฐ”ํƒ•ํ™”๋ฉด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 2ํ–‰ 1์—ด์—๋งŒ ์•„์ด์ฝ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด๋ฅผ ๋“œ๋ž˜๊ทธ๋กœ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ทธ ์นธ์˜ ์™ผ์ชฝ ์œ„ (1, 0)์—์„œ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ (2, 1)๋กœ ๋“œ๋ž˜๊ทธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. (1, 0)์—์„œ (2, 2)๋กœ ๋“œ๋ž˜๊ทธํ•ด๋„ ์•„์ด์ฝ˜์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์ „๋ณด๋‹ค ์ด๋™๊ฑฐ๋ฆฌ๊ฐ€ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [1, 0, 2, 1]์„ return ํ•ฉ๋‹ˆ๋‹ค.

์ œ์ถœ

import Foundation

func solution(_ wallpaper:[String]) -> [Int] {
    var x_arr = [Int]()
    var y_arr = [Int]()

    for (i, paper) in wallpaper.enumerated() {
        if paper.contains("#"){
            for (index, w) in paper.map{String($0)}.enumerated(){
                if w == "#" {
                    x_arr.append(i)
                    y_arr.append(index)
                }
            }
        }
    }

    return [x_arr.min() ?? 0, y_arr.min() ?? 0, x_arr.max()!+1, y_arr.max()!+1]
}
wallpaper ๋ฐฐ์—ด์˜ ์—ด์— "#"์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์•ˆ์ชฝ for๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.
x_arr์—๋Š” ์—ด์„ ๋‚˜ํƒ€๋‚ด๋Š” i์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ , y_arr์—๋Š” ํ–‰์„ ๋‚˜ํƒ€๋‚ด๋Š” index๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
x_arr์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’๊ณผ y_arr์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’, x_arr์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’+1, y_arr์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’+1์„ ๋ฐฐ์—ด์— ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
(๊ฐ ๋ฐฐ์—ด์— ๊ฐ’์ด ์—†๋‹ค๋ฉด 0์„ ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.)
 

 

๋ฐ˜์‘ํ˜•