๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ–‰๋ ฌ ํ…Œ๋‘๋ฆฌ ํšŒ์ „ํ•˜๊ธฐ / ํŒŒ์ด์ฌ / Python / 2021 Dev-Matching: ์›น ๋ฐฑ์—”๋“œ

by J์ ์ฝ” 2021. 10. 2.
728x90
๋ฐ˜์‘ํ˜•

 

 

๐Ÿ’กsolutions )

๐Ÿ’ฌ ์ •ํ•ด์ง„ ํ–‰๋ ฌ ๋ฒ”์œ„์˜ ๋งจ ์ƒ๋‹จ ์˜ค๋ฅธ์ชฝ(a, b)์—์„œ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ →  ↓  ←  ↑  ์ˆœ์œผ๋กœ ํ–‰๋ ฌ ํ…Œ๋‘๋ฆฌ๋ฅผ ํšŒ์ „ํ•œ๋‹ค.

๐Ÿ’ฌ ์ด์ „ ๊ฐ’์„ before์— ์ €์žฅํ•ด๋†“๊ณ  ์ธ๋ฑ์Šค๋ฅผ ์ด๋™ํ•˜๋ฉฐ ํ–‰๋ ฌ ํ…Œ๋‘๋ฆฌ ์•ˆ์˜ ๊ฐ’๋“ค์„ ๋ฐ”๊ฟ”์ค€๋‹ค.

๐Ÿ’ฌ ์ด๋•Œ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค min()ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ํ–‰๋ ฌ ํ…Œ๋‘๋ฆฌ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’๋“ค ์ค‘ ์ตœ์†Œ๊ฐ’์„ ํŒ๋ณ„ํ•œ๋‹ค.

 

๐Ÿ‘จ‍๐Ÿ’ปcode )

def solution(rows, columns, queries):
    arr = [[0]*columns for _ in range(rows)]
    num = 1
    answer = []
    for i in range(rows):
        for j in range(columns):
            arr[i][j] = num
            num += 1
    
    for a,b,c,d in queries:
        before = arr[a-1][b-1]
        min_value = 10000
        for j in range(b, d):
            min_value = min(before, min_value)
            before, arr[a-1][j] = arr[a-1][j], before
        for i in range(a, c):
            min_value = min(before, min_value)
            before, arr[i][d-1] = arr[i][d-1], before
        for j in range(d-2, b-2, -1):
            min_value = min(before, min_value)
            before, arr[c-1][j] = arr[c-1][j], before
        for i in range(c-2, a-2, -1):
            min_value = min(before, min_value)
            before, arr[i][b-1] = arr[i][b-1], before
        answer.append(min_value)
    
    return answer

 

๐Ÿ“Œdescription )

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํ–‰๋ ฌ ํ…Œ๋‘๋ฆฌ ํšŒ์ „ํ•˜๊ธฐ

6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3]

programmers.co.kr

 


๋ฌธ์ œ ์„ค๋ช…

rows x columns ํฌ๊ธฐ์ธ ํ–‰๋ ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ–‰๋ ฌ์—๋Š” 1๋ถ€ํ„ฐ rows x columns๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ํ•œ ์ค„์”ฉ ์ˆœ์„œ๋Œ€๋กœ ์ ํ˜€์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ–‰๋ ฌ์—์„œ ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ๋ฒ”์œ„๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์„ ํƒํ•ด, ํ…Œ๋‘๋ฆฌ ๋ถ€๋ถ„์— ์žˆ๋Š” ์ˆซ์ž๋“ค์„ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „์‹œํ‚ค๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํšŒ์ „์€ (x1, y1, x2, y2)์ธ ์ •์ˆ˜ 4๊ฐœ๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ, ๊ทธ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • x1 ํ–‰ y1 ์—ด๋ถ€ํ„ฐ x2 ํ–‰ y2 ์—ด๊นŒ์ง€์˜ ์˜์—ญ์— ํ•ด๋‹นํ•˜๋Š” ์ง์‚ฌ๊ฐํ˜•์—์„œ ํ…Œ๋‘๋ฆฌ์— ์žˆ๋Š” ์ˆซ์ž๋“ค์„ ํ•œ ์นธ์”ฉ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ 6 x 6 ํฌ๊ธฐ ํ–‰๋ ฌ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

์ด ํ–‰๋ ฌ์— (2, 2, 5, 4) ํšŒ์ „์„ ์ ์šฉํ•˜๋ฉด, ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด 2ํ–‰ 2์—ด๋ถ€ํ„ฐ 5ํ–‰ 4์—ด๊นŒ์ง€ ์˜์—ญ์˜ ํ…Œ๋‘๋ฆฌ๊ฐ€ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ์ค‘์•™์˜ 15์™€ 21์ด ์žˆ๋Š” ์˜์—ญ์€ ํšŒ์ „ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ฃผ์˜ํ•˜์„ธ์š”.

ํ–‰๋ ฌ์˜ ์„ธ๋กœ ๊ธธ์ด(ํ–‰ ๊ฐœ์ˆ˜) rows, ๊ฐ€๋กœ ๊ธธ์ด(์—ด ๊ฐœ์ˆ˜) columns, ๊ทธ๋ฆฌ๊ณ  ํšŒ์ „๋“ค์˜ ๋ชฉ๋ก queries๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ ํšŒ์ „๋“ค์„ ๋ฐฐ์—ด์— ์ ์šฉํ•œ ๋’ค, ๊ทธ ํšŒ์ „์— ์˜ํ•ด ์œ„์น˜๊ฐ€ ๋ฐ”๋€ ์ˆซ์ž๋“ค ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

  • rows๋Š” 2 ์ด์ƒ 100 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • columns๋Š” 2 ์ด์ƒ 100 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์ฒ˜์Œ์— ํ–‰๋ ฌ์—๋Š” ๊ฐ€๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ์ˆซ์ž๊ฐ€ 1๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์ ํ˜€์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ฆ‰, ์•„๋ฌด ํšŒ์ „๋„ ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ, i ํ–‰ j ์—ด์— ์žˆ๋Š” ์ˆซ์ž๋Š” ((i-1) x columns + j)์ž…๋‹ˆ๋‹ค.
  • queries์˜ ํ–‰์˜ ๊ฐœ์ˆ˜(ํšŒ์ „์˜ ๊ฐœ์ˆ˜)๋Š” 1 ์ด์ƒ 10,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • queries์˜ ๊ฐ ํ–‰์€ 4๊ฐœ์˜ ์ •์ˆ˜ [x1, y1, x2, y2]์ž…๋‹ˆ๋‹ค.
    • x1 ํ–‰ y1 ์—ด๋ถ€ํ„ฐ x2 ํ–‰ y2 ์—ด๊นŒ์ง€ ์˜์—ญ์˜ ํ…Œ๋‘๋ฆฌ๋ฅผ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
    • 1 ≤ x1 < x2 ≤ rows, 1 ≤ y1 < y2 ≤ columns์ž…๋‹ˆ๋‹ค.
    • ๋ชจ๋“  ํšŒ์ „์€ ์ˆœ์„œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‘ ๋ฒˆ์งธ ํšŒ์ „์— ๋Œ€ํ•œ ๋‹ต์€ ์ฒซ ๋ฒˆ์งธ ํšŒ์ „์„ ์‹คํ–‰ํ•œ ๋‹ค์Œ, ๊ทธ ์ƒํƒœ์—์„œ ๋‘ ๋ฒˆ์งธ ํšŒ์ „์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์ด๋™ํ•œ ์ˆซ์ž ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

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

rowscolumnsqueriesresult

6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25]
3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3]
100 97 [[1,1,100,97]] [1]

 


 

๋ฐ˜์‘ํ˜•