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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1] ๋น„๋ฐ€์ง€๋„

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

๋น„๋ฐ€์ง€๋„

๋ฌธ์ œ ์„ค๋ช…

๋„ค์˜ค๋Š” ํ‰์†Œ ํ”„๋กœ๋„๊ฐ€ ๋น„์ƒ๊ธˆ์„ ์ˆจ๊ฒจ๋†“๋Š” ์žฅ์†Œ๋ฅผ ์•Œ๋ ค์ค„ ๋น„๋ฐ€์ง€๋„๋ฅผ ์†์— ๋„ฃ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋น„๋ฐ€์ง€๋„๋Š” ์ˆซ์ž๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์–ด ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•ด์•ผ ํ•œ๋‹ค. ๋‹คํ–‰ํžˆ ์ง€๋„ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•  ๋ฐฉ๋ฒ•์„ ์ ์–ด๋†“์€ ๋ฉ”๋ชจ๋„ ํ•จ๊ป˜ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

  1. ์ง€๋„๋Š” ํ•œ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ n์ธ ์ •์‚ฌ๊ฐํ˜• ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ, ๊ฐ ์นธ์€ "๊ณต๋ฐฑ"(" ") ๋˜๋Š” "๋ฒฝ"("#") ๋‘ ์ข…๋ฅ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  2. ์ „์ฒด ์ง€๋„๋Š” ๋‘ ์žฅ์˜ ์ง€๋„๋ฅผ ๊ฒน์ณ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ "์ง€๋„ 1"๊ณผ "์ง€๋„ 2"๋ผ๊ณ  ํ•˜์ž. ์ง€๋„ 1 ๋˜๋Š” ์ง€๋„ 2 ์ค‘ ์–ด๋А ํ•˜๋‚˜๋ผ๋„ ๋ฒฝ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๋ฒฝ์ด๋‹ค. ์ง€๋„ 1๊ณผ ์ง€๋„ 2์—์„œ ๋ชจ๋‘ ๊ณต๋ฐฑ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๊ณต๋ฐฑ์ด๋‹ค.
  3. "์ง€๋„ 1"๊ณผ "์ง€๋„ 2"๋Š” ๊ฐ๊ฐ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ๋‹ค.
  4. ์•”ํ˜ธํ™”๋œ ๋ฐฐ์—ด์€ ์ง€๋„์˜ ๊ฐ ๊ฐ€๋กœ์ค„์—์„œ ๋ฒฝ ๋ถ€๋ถ„์„ 1, ๊ณต๋ฐฑ ๋ถ€๋ถ„์„ 0์œผ๋กœ ๋ถ€ํ˜ธํ™”ํ–ˆ์„ ๋•Œ ์–ป์–ด์ง€๋Š” ์ด์ง„์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์˜ ๋ฐฐ์—ด์ด๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

๋„ค์˜ค๊ฐ€ ํ”„๋กœ๋„์˜ ๋น„์ƒ๊ธˆ์„ ์†์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก, ๋น„๋ฐ€์ง€๋„์˜ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•˜๋Š” ์ž‘์—…์„ ๋„์™€์ค„ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ.

์ž…๋ ฅ ํ˜•์‹

์ž…๋ ฅ์œผ๋กœ ์ง€๋„์˜ ํ•œ ๋ณ€ ํฌ๊ธฐ n๊ณผ 2๊ฐœ์˜ ์ •์ˆ˜ ๋ฐฐ์—ด arr1, arr2๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.

  • 1 โ‰ฆ n โ‰ฆ 16
  • arr1, arr2๋Š” ๊ธธ์ด n์ธ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง„๋‹ค.
  • ์ •์ˆ˜ ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ x๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ์˜ ๊ธธ์ด๋Š” n ์ดํ•˜์ด๋‹ค. ์ฆ‰, 0 โ‰ฆ x โ‰ฆ 2n - 1์„ ๋งŒ์กฑํ•œ๋‹ค.

์ถœ๋ ฅ ํ˜•์‹

์›๋ž˜์˜ ๋น„๋ฐ€์ง€๋„๋ฅผ ํ•ด๋…ํ•˜์—ฌ '#', ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ์ถœ๋ ฅํ•˜๋ผ.

์ž…์ถœ๋ ฅ ์˜ˆ

๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’
n 5
arr1 [9, 20, 28, 18, 11]
arr2 [30, 1, 21, 17, 28]
์ถœ๋ ฅ ["#####","# # #", "### #", "# ##", "#####"]

 

๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’
n 6
arr1 [46, 33, 33 ,22, 31, 50]
arr2 [27 ,56, 19, 14, 14, 10]
์ถœ๋ ฅ ["######", "### #", "## ##", " #### ", " #####", "### # "]

์ œ์ถœ

func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
    var answer: [String] = []
    
    for i in 0..<n{
        var s = String(arr1[i]|arr2[i], radix: 2)
        var re = String(repeating: "0", count: n - s.count) + s
        answer.append(re.reduce(""){$0 + ($1 == "0" ? " " : "#")})
    }
    return answer
}
๋‘ ๋ฐฐ์—ด์„ OR ์—ฐ์‚ฐํ•œ ํ›„, 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์ดํ›„ ์•ž์˜ ๊ณต๋ฐฑ์„ 0์œผ๋กœ ์ฑ„์šด๋‹ค.
0์ด๋ผ๋ฉด ๊ณต๋ฐฑ์œผ๋กœ, 1์ด๋ผ๋ฉด "#"์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ answer ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค.

๋‹ค๋ฅธ ํ’€์ด

func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
    return (0..<n).map { String(String(arr1[$0]|arr2[$0]|2<<(n - 1), radix: 2).map { $0 == "1" ? "#" : " " }[1...n]) }
}
arr1๊ณผ arr2 ๊ทธ๋ฆฌ๊ณ  2๋ฅผ n-1๋งŒํผ shift ํ•œ ๊ฐ’์„ OR ์—ฐ์‚ฐํ•œ ํ›„ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. (n์ด 5์ผ ๊ฒฝ์šฐ ๊ธธ์ด๊ฐ€ 6์ธ ์ด์ง„์ˆ˜ ์ƒ์„ฑ)
๊ฐ ์ž๋ฆฌ์ˆ˜๊ฐ€ 1์ด๋ผ๋ฉด "#"์œผ๋กœ, ์•„๋‹ˆ๋ผ๋ฉด ๊ณต๋ฐฑ์œผ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, ๊ฐ€์žฅ ์•ž๋ถ€๋ถ„์„ ์ œ์™ธํ•œ 1๋ฒˆ๋ถ€ํ„ฐ n๋ฒˆ๊นŒ์ง€์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

ex) arr1[0] = 3, arr2[0] = 4, n = 5 ์ธ๊ฒฝ์šฐ
3 OR 4 => 111
3 OR 4 OR (2 << 4) => 100111

๋งจ ์•ž์˜ 1์„ ๋ฒ„๋ฆฌ๋ฉด 00111๋กœ, ๊ธธ์ด๊ฐ€ 5์ธ ์ด์ง„์ˆ˜๊ฐ€ ๋œ๋‹ค.

 

๋ฐ˜์‘ํ˜•