알고리즘/프로그래머스
[월간 코드 챌린지 시즌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로 채워짐
1 | 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;
}