๊ฐœ๋ฐœ์ž HOON
๐Ÿ› HOON DEVLog
๊ฐœ๋ฐœ์ž HOON
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ˜Ž ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ (137)
    • ๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„ (7)
    • ๐Ÿฆ” ์ทจ์—…์ค€๋น„ ๊ธฐ๋ก (7)
    • โ˜• ์ž๋ฐ” : JAVA (5)
    • ๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS (80)
    • ๐ŸŒฑ ๋ฐฑ์—”๋“œ : Backend (13)
    • ๐Ÿงช ์ปดํ“จํ„ฐ๊ณผํ•™ : CS (11)
    • ๐Ÿ—‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : DB (1)
    • ๐Ÿƒ‍โ™‚๏ธ DEVLOG (8)
    • โš™๏ธ Trouble Shooting (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • GitHub
  • Resume

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๊ฐœ๋ฐœ์ž HOON

๐Ÿ› HOON DEVLog

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฟผ๋“œ์••์ถ• ํ›„ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ (level2, python)
๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฟผ๋“œ์••์ถ• ํ›„ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ (level2, python)

2022. 9. 23. 19:32

๋ฌธ์ œ ์„ค๋ช…

0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ 2n x 2n ํฌ๊ธฐ์˜ 2์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด arr์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ด arr์„ ์ฟผ๋“œ ํŠธ๋ฆฌ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์••์ถ•ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

  1. ๋‹น์‹ ์ด ์••์ถ•ํ•˜๊ณ ์ž ํ•˜๋Š” ํŠน์ • ์˜์—ญ์„ S๋ผ๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋งŒ์•ฝ S ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ชจ๋“  ์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฐ’์ด๋ผ๋ฉด, S๋ฅผ ํ•ด๋‹น ์ˆ˜ ํ•˜๋‚˜๋กœ ์••์ถ•์‹œํ‚ต๋‹ˆ๋‹ค.
  3. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด, S๋ฅผ ์ •ํ™•ํžˆ 4๊ฐœ์˜ ๊ท ์ผํ•œ ์ •์‚ฌ๊ฐํ˜• ์˜์—ญ(์ž…์ถœ๋ ฅ ์˜ˆ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.)์œผ๋กœ ์ชผ๊ฐ  ๋’ค, ๊ฐ ์ •์‚ฌ๊ฐํ˜• ์˜์—ญ์— ๋Œ€ํ•ด ๊ฐ™์€ ๋ฐฉ์‹์˜ ์••์ถ•์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

 

arr์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ arr์„ ์••์ถ•ํ–ˆ์„ ๋•Œ, ๋ฐฐ์—ด์— ์ตœ์ข…์ ์œผ๋กœ ๋‚จ๋Š” 0์˜ ๊ฐœ์ˆ˜์™€ 1์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„์„œ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 


์ œํ•œ์‚ฌํ•ญ
  • arr์˜ ํ–‰์˜ ๊ฐœ์ˆ˜๋Š” 1 ์ด์ƒ 1024 ์ดํ•˜์ด๋ฉฐ, 2์˜ ๊ฑฐ๋“ญ ์ œ๊ณฑ์ˆ˜ ํ˜•ํƒœ๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, arr์˜ ํ–‰์˜ ๊ฐœ์ˆ˜๋Š” 1, 2, 4, 8, ..., 1024 ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
    • arr์˜ ๊ฐ ํ–‰์˜ ๊ธธ์ด๋Š” arr์˜ ํ–‰์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฆ‰, arr์€ ์ •์‚ฌ๊ฐํ˜• ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
    • arr์˜ ๊ฐ ํ–‰์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์€ 0 ๋˜๋Š” 1 ์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

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

 

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

  • ๋‹ค์Œ ๊ทธ๋ฆผ์€ ์ฃผ์–ด์ง„ arr์„ ์••์ถ•ํ•˜๋Š” ๊ณผ์ •์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ตœ์ข… ์••์ถ• ๊ฒฐ๊ณผ์— 0์ด 4๊ฐœ, 1์ด 9๊ฐœ ์žˆ์œผ๋ฏ€๋กœ, [4,9]๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

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

  • ๋‹ค์Œ ๊ทธ๋ฆผ์€ ์ฃผ์–ด์ง„ arr์„ ์••์ถ•ํ•˜๋Š” ๊ณผ์ •์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ตœ์ข… ์••์ถ• ๊ฒฐ๊ณผ์— 0์ด 10๊ฐœ, 1์ด 15๊ฐœ ์žˆ์œผ๋ฏ€๋กœ, [10,15]๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ’€์ด ์ฝ”๋“œ

def check(start, size, arr):
    global answer
    x, y = start
    # size 1์ธ ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฒฝ์šฐ
    if size == 1:
        if arr[x][y]:
            answer[1] += 1
        else:
            answer[0] += 1
        return
    
    # size์ธ ์ •์‚ฌ๊ฐํ˜• ๋‚ด๋ถ€๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•œ ์›์†Œ์ธ์ง€ ์ฒดํฌ
    temp = arr[x][y]
    flag = True
    for i in range(size):
        for j in range(size):
            nx = x + i
            ny = y + j
            if temp != arr[nx][ny]:
                flag = False
                break
                
    # ์•„๋‹Œ ๊ฒฝ์šฐ 4์กฐ๊ฐ์œผ๋กœ ์ชผ๊ฐœ๊ธฐ
    if flag:
        if temp:
            answer[1] += 1
        else:
            answer[0] += 1
        return
    else:
        next = size // 2
        check([x, y], next, arr)
        check([x, y+next], next, arr)
        check([x+next, y], next, arr)
        check([x+next, y+next], next, arr)
        return
        

def solution(arr):
    global answer
    answer = [0, 0]
    
    size = len(arr)
    check([0, 0], size, arr)
    
    return answer

๋ถ„ํ• ์ •๋ณต ๋ฌธ์ œ์ด๋‹ค. ๋ฐฑ์ค€ ๊ธฐ์ค€์œผ๋กœ๋Š” ์‹ค๋ฒ„ 1~2 ์ •๋„์˜ ๋‚œ์ด๋„.

N ์‚ฌ์ด์ฆˆ์˜ ์ •์‚ฌ๊ฐํ˜•์„ 4๋ถ„ํ• ํ•˜์—ฌ ๋‚ด๋ถ€ ์›์†Œ๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•˜๋ฉด ํ•˜๋‚˜๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๊ทธ๋Ÿฐ ๋ฌธ์ œ์ด๋‹ค.

 

์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ’€์ดํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ์‰ฝ๊ฒŒ ํ’€์ดํ•  ์ˆ˜ ์žˆ๋‹ค.

1) ์ •์‚ฌ๊ฐํ˜•์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ 1์ด๋ฉด ๊ธฐ์ € ์กฐ๊ฑด (์žฌ๊ท€๋ฅผ ๋ฉˆ์ถ”๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ์กฐ๊ฑด)

2) ๋‚ด๋ถ€ ์ •์‚ฌ๊ฐํ˜•์˜ ์›์†Œ๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•œ ์›์†Œ๋ฉด ์žฌ๊ท€๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ  ๊ฒฐ๊ณผ๋งŒ ๋ฐ˜์˜

3) ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด, ์ •์‚ฌ๊ฐํ˜•์„ ๋‹ค์‹œ 4๋ถ„ํ•  ํ•ด ๊ฐ๊ฐ์˜ ์ •์‚ฌ๊ฐํ˜•์— ๋Œ€ํ•ด ๋‹ค์‹œ ํŒ๋‹จ.

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ธฐ์ง€๊ตญ ์„ค์น˜ (level3, python)  (1) 2022.09.25
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 124 ๋‚˜๋ผ์˜ ์ˆซ์ž (level2, python)  (1) 2022.09.25
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ˆซ์ž ๊ฒŒ์ž„ (level3, python)  (1) 2022.09.20
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์†Œ์ˆ˜ ์ฐพ๊ธฐ (level2, python)  (0) 2022.09.20
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฒ ์ŠคํŠธ์•จ๋ฒ” (level3, python)  (0) 2022.09.20
    '๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ธฐ์ง€๊ตญ ์„ค์น˜ (level3, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 124 ๋‚˜๋ผ์˜ ์ˆซ์ž (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ˆซ์ž ๊ฒŒ์ž„ (level3, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์†Œ์ˆ˜ ์ฐพ๊ธฐ (level2, python)
    ๊ฐœ๋ฐœ์ž HOON
    ๊ฐœ๋ฐœ์ž HOON
    ์ข‹์€ ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ก์„ ๋ชจ์•˜์Šต๋‹ˆ๋‹ค. # ์ฃผ๋‹ˆ์–ด # ๋ฐฑ์—”๋“œ # ๊ฐœ๋ฐœ์ž

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”