DM Log

[월간 코드 챌린지 시즌3] n^2 배열 자르기 - Python / JavaScript 본문

알고리즘/프로그래머스

[월간 코드 챌린지 시즌3] n^2 배열 자르기 - Python / JavaScript

Dev. Dong 2025. 3. 19. 17:47

문제 링크 - http://school.programmers.co.kr/learn/courses/30/lessons/87390

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[문제 간단 요약]

1. n*n 배열을 1차원 배열로 만들어서 left와 right의 부분을 출력하는 문제

2. n*n 배열은 1행 1열부터 i행 i열까지 비어있는 숫자를 i로 채워짐

2 3 4
2 2 3 4
3 3 3 4
4 4 4 4

 

 [문제 해결 방안]

1. 문제의 n*n 배열을 1차원으로 변경 시 규칙성 발견

  • n=3  1,2,3|2,2,3|3,3,3
  • n=4  1,2,3,4|2,2,3,4|3,3,3,4|4,4,4,4

2. 몫과 나머지를 활용하여 규칙성 문제 해결

 

[문제 해결 코드 - python]

def solution(n, left, right):
    answer = []
    for i in range(left+1, right+2):
        if i % n == 0:
            answer.append(n)
        else:
            if i % n <= i // n:
                answer.append(i // n + 1)
            else:
                answer.append(i % n)
    return answer

 

[문제 해결 코드 - javascript]

function solution(n, left, right) {
    var answer = [];
    for (let i = left+1; i < right+2; i++) {
        if (i % n === 0) {
            answer.push(n)
        } else {
            if (i % n <= i / n) {
                answer.push(Math.floor(i / n) +1)
            } else {
                answer.push(i % n)
            }
        }
    }
    return answer;
}