프로그래머스 Lv.2: n^2 배열 자르기

Steve·2021년 11월 15일
0

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

정말 많이 고민했지만 마지막 3개의 테스트케이스가 런타임 에러가 나서 다른사람의 풀이를 참고한 문제.

이 문제는 규칙을 파악해야 하는 문제였다.
그런데 생각보다 간단해서 놀랐다.

일단 2차원 배열의 규칙이 진짜 간단했다.
그냥 행과 열 중에 큰 값 + 1 이 해당 행, 열 안의 값이었다...(충격)

그렇다면 left 와 right 사이에 있는 값을 어떻게 구할 것인가?

만약 n = 5 라면,
5 x 5 = 총 25칸의 2x2 배열에 숫자를 채워넣는다.
이걸 1차원 배열로 만들어도 25칸 배열이다.

만약 left 가 7이라면?
행은 7 / n 을 내림한 값이다.
열은 7 / n 의 나머지다.

그냥 2차원 배열의 가로길이로 나눠주면 되는거였다.

function solution(n, left, right) {
    let answer = [];
    for (let i = left; i <= right; i++){
        let row = Math.floor(i/n);
        let col = i % n;
        let value = Math.max(row, col) + 1;
        answer.push(value);
    }
    return answer;
}
profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글