์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค. n^2 ๋ฐฐ์—ด ์ž๋ฅด๊ธฐ

์š”๋Œœ๋‹ค 2023. 1. 18. 15:51

https://school.programmers.co.kr/learn/courses/30/lessons/87390

 

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

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

programmers.co.kr

๋ฌธ์ œ๋ณด๊ณ  ์‰ฝ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ,, ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ์ด๋‹ค.

์–ด์ฐŒ์–ด์ฐŒํ•ด์„œ ํ’€๊ธด ํ–ˆ๋Š”๋ฐ ์ฝ”๋“œ๊ฐ€ ์ผ๋‹จ ๊ฐ€๋…์„ฑ๋„ ๋–จ์–ด์ง€๊ณ , 

30์  ๋ฐ›๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ํžˆ๋“ ์ผ€์ด์Šค๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ..

# ์‹œ๊ฐ„ ์ดˆ๊ณผ ์ฝ”๋“œ
"""
def solution(n, left, right):
    answer = [[0]*(n) for _ in range(n)]
    ans = []
    for i in range(n):
        for j in range(n):
            if (i+1)*(j+1) <= (i+1)**2:
                answer[i][j] = i+1
            else : 
                answer[i][j] = answer[i][j-1] +1
            ans.append(answer[i][j])  

    return ans[left:right+1]
"""

์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚œ ์ด์œ  :

์†”์งํžˆ ๋‚ด๊ฐ€ ๋ด๋„ ๋ฉ”๋ชจ๋ฆฌ๋“  ์‹œ๊ฐ„์ด๋“  ์ดˆ๊ณผ๋  ๊ฒƒ ๊ฐ™์•˜์Šด.. ๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ ๋ณด๊ณ ,

2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  ๋‹ค์‹œ 1์ฐจ์› ๋ฐฐ์—ด๋กœ ์ž˜๋ผ์„œ left~right ์ธ๋ฑ์Šค๋ฅผ ๋ฝ‘์„๊ฑฐ๋ฉด ๊ตณ์ด 2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์žˆ๋‚˜? ์‹ถ์–ด์„œ 1์ฐจ์› ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์‹คํŒจใ…Ž..

๊ทธ๋ž˜์„œ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์ฃผ์—ˆ์Œ (1์ฐจ ๋‚ญ๋น„)

๊ทธ๋ฆฌ๊ณ  ์ด์ œ left~right ์ธ๋ฑ์Šค๋ฅผ ๋ฝ‘์•„์ค˜์•ผํ•˜๋Š”๋ฐ... 2์ฐจ์› ๋ฐฐ์—ด์—์„œ ์–ด๋–ป๊ฒŒ ๋ฝ‘์•„์•ผํ• ์ง€ ๋ชฐ๋ผ์„œ 1์ฐจ์›๋ฐฐ์—ด์— 2์ฐจ์›๋ฐฐ์—ด๊ฐ’์„ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•ด์คŒ^^^ (2์ฐจ ๋‚ญ๋น„)

๊ทธ๋ž˜์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๋‚ฌ๋‹ค..................

์• ์ดˆ์— 

[ [1, 2, 3]

  [2, 2, 3]

  [3, 3, 3] ]  <= ์ด ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๊ณต์‹๋„ ์ด์ƒํ•ด์„œ ๋ง˜์— ์•ˆ ๋“ค์—ˆ๋‹ค...............

 

<< ํ’€์ด >>

n์ด 3์ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐฐ์—ด์ด ๋งŒ๋“ค์–ด์งˆ ๊ฒƒ

(0,0) = 1 (0,1) = 2 (0,2) = 3
(1,0) = 2 (1,1) = 2 (1,2) = 3
(2,0) = 3 (2,1) = 3 (2,2) = 3

(0,0)์ด๋ฉด 1, ์ธ๋ฑ์Šค์— 1์ด ํ•œ ๊ฐœ๋ผ๋„ ๋“ค์–ด๊ฐ€๋ฉด 2, ์ธ๋ฑ์Šค์— 2๊ฐ€ ํ•œ ๊ฐœ๋ผ๋„ ๋“ค์–ด๊ฐ€๋ฉด 3์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ•ด๋‹น ์œ„์น˜์˜ ๊ฐ’ = max (ํ•ด๋‹น ์œ„์น˜ // n , ํ•ด๋‹น ์œ„์น˜ % n) + 1์ด๋‹ค.

์™œ๋ƒํ•˜๋ฉด ํ•ด๋‹น ์œ„์น˜ // n == i, ํ•ด๋‹น ์œ„์น˜ % n == j ์ด๋ฏ€๋กœ i์™€ j ์ธ๋ฑ์Šค ์ค‘ ํฐ ์ธ๋ฑ์Šค์˜ +1 ์ด ๊ฐ’์ด ๋˜๋Š” ๊ฒƒ...

์ง„์งœ ๋Œ€๋ฐ•์ด๋‹ค....

def solution(n, left, right):
    answer = []

    for i in range(left, right + 1):
        answer.append(max(i // n, i % n) + 1)

    return answer

๊ทธ๋ž˜์„œ ์ฝ”๋“œ๋Š” ์œ„์™€ ๊ฐ™์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

answer ์ „์ฒด์˜ 1์ฐจ์› ๋ฐฐ์—ด๋„ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์—ˆ๋˜ ๊ฒƒ.. ๊ทธ๋ƒฅ left~right ์œ„์น˜๊นŒ์ง€๋งŒ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด ๋๋˜ ๊ฒƒ์ž„..