λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» DEV/γ„΄ problems

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 2021 Dev-Matching: μ›Ή λ°±μ—”λ“œ 개발자(μƒλ°˜κΈ°) : ν–‰λ ¬ ν…Œλ‘λ¦¬ νšŒμ „ν•˜κΈ°

by vodkassi 2021. 7. 8.
728x90

문제 μ„€λͺ… 및 μž…μΆœλ ₯ 예: 링크 μ°Έμ‘°

https://programmers.co.kr/learn/courses/30/lessons/77485

 

 

λ‚˜μ˜ μ†”λ£¨μ…˜

 

λ‹Ήμ—°νžˆ μ²˜μŒμ—λŠ” 2 차원 배열을 λ§Œλ“€μ–΄ 인덱슀λ₯Ό ν•˜λ‚˜ν•˜λ‚˜ μ‘°νšŒν•˜λ©° λ³€κ²½ν•  생각을 ν–ˆμœΌλ‚˜,

μ΄λŠ” μ‹€ν–‰μ‹œκ°„λ„ 였래 걸리고 λ³΅μž‘ν•˜λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.

 

κ·Έλž˜μ„œ 2차원 배열을 1차원 λ°°μ—΄κ³Ό 같이 λŠ˜μ–΄λ†“λŠ”λ‹€ 해도, 인덱슀 κ°’μœΌλ‘œ μ ‘κ·Όν•˜μ—¬ μ›ν•˜λŠ” μž‘μ—…μ„ ν•  수 μžˆμ§€ μ•Šμ„κΉŒ? 

ν•˜λŠ” 고민을 μ‹œμž‘μœΌλ‘œ 1차원 배열을 ν™œμš©ν•˜μ—¬ 문제λ₯Ό ν’€μ–΄ λ³΄μ•˜λ‹€. (그런데 됐닀. μ™œ λ˜μ§€..) 

 

λ‹¨μˆœνžˆ λ§ν•˜μžλ©΄,

[ [1,2,3],
  [4,5,6],
  [7,8,9] ]
  
  # μ΄λŸ¬ν•œ 2차원 λ°°μ—΄μ˜ ν˜•νƒœλ₯Ό
  
  [ 1,2,3,4,5,6,7,8,9 ]
  
  # 1차원 λ°°μ—΄μ˜ ν˜•νƒœλ‘œ λ§Œλ“€μ–΄ ν•΄κ²°ν•˜κ² λ‹€λŠ” λœ»μ΄λ‹€.

 

μž‘μ—… 과정을 μš”μ•½ν•˜λ©΄,

1. 2차원 λ°°μ—΄μ˜ κ°’μ˜ 개수만큼 (row * column 만큼) 의 길이λ₯Ό κ°–λŠ” 배열을 λ§Œλ“€μ–΄, 1λΆ€ν„° μ±„μ›Œ λ„£μ–΄μ€€λ‹€. 

2. 2차원 λ°°μ—΄μ˜ μ’Œν‘œλ₯Ό 1차원 λ°°μ—΄μ˜ 인덱슀 κ°’μœΌλ‘œ λ°”κΏ”μ€€λ‹€. 

3. λͺ©ν‘œν•˜λŠ” λ²”μœ„μ˜ 인덱슀λ₯Ό λͺ¨μ•„ ν•˜λ‚˜μ˜ 배열에 λ‹΄μ•„μ€€λ‹€ (answer) 

4. λ°˜λ³΅λ¬Έμ„ 돌렀 처음 μƒμ„±ν–ˆλ˜ λ°°μ—΄μ—μ„œ λͺ©ν‘œν•˜λŠ” 인덱슀의 값을 μ–»μ–΄λ‚΄κ³ , μƒˆλ‘œμš΄ κ°’μœΌλ‘œ λ³€κ²½ν•΄μ€€λ‹€. 

 

κ·Έλ¦¬ν•˜μ—¬ λ‚˜μ˜¨ μ½”λ“œ:

def solution(rows, columns, queries):
    matrix = list(range(1, (rows * columns) + 1))
    answer = []

    for q in queries: 
        print(matrix)
        start = columns * (q[0] - 1) + q[1] -1 
        end = columns * (q[2] - 1) + q[3] -1 
        cols = q[3] - q[1]
        rows = q[2] - q[1]
        indices = list(range(start, start+cols)) + list(range(start+cols, end, columns))
        indices += list(range(end, end-cols, -1)) + list(range(end-cols, start, -columns))
        values = []
        for i in indices:
            values.append(matrix[i])
        answer.append(min(values))
        indices = indices[1:] + [indices[0]]
        for idx, val in enumerate(indices):
            matrix[val] = values[idx]
        
    return answer

 

배운 점

  • 2차원 λ°°μ—΄λ‘œ ν’€μ—ˆλ‹€λ©΄ λ”μš± 정석에 κ°€κΉŒμš΄ λ‹΅μ•ˆμ΄ λ˜μ—ˆκ² μ§€λ§Œ, μœ μ‚¬ν•œ λ¬Έμ œν’€μ΄λ₯Ό ν•΄ λ³Έ κ²½ν—˜μ΄ μžˆμ–΄ μƒˆλ‘œμš΄ 방법을 μ‹œλ„ν•΄ λ³΄μ•˜λ‹€. 그런데 잘 λ˜λŠ” κ±Έ λ³΄λ‹ˆ μ•Œκ³ λ¦¬μ¦˜ 풀이에 μ •λ„λž€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” λ“― ν•˜λ‹€. 기쑴의 μ•Œκ³ λ¦¬μ¦˜ 문법을 ν•™μŠ΅ν•˜λ˜ λ‚˜λ§Œμ˜ μ ‘κ·Ό 방법을 계속 κ³„λ°œν•΄ λ‚˜κ°€λŠ” 것이 쒋은 μžμ„ΈμΌ 것이라고 λŠλ‚€λ‹€. 

λŒ“κΈ€