본문 바로가기
코딩테스트 연습/Array

[Programmers] n^2 배열 자르기

by eddypark 2024. 10. 9.

https://school.programmers.co.kr/learn/courses/30/lessons/87390?language=javascript

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

이 문제는 규칙을 찾는 게 중요하다.

문제가 주어진대로 구현을 진행해도 되지만 그렇게 되면 코드의 길이가 너무 길어지고 시간초가가 발생한다.

규칙을 보려면 배열의 인덱스를 값에 맞게 적어봐야 한다.

 

n이 3일 경우의 예시이다.

배열을 첫 번째 규칙처럼 만든 다음 펼친 모습은 다음과 같다. (인덱스, (행, 열), 값)

0 (0, 0) 1 1 (0, 1) 2 2 (0, 2) 3 3 (1, 0) 2 4 (1, 1) 2 5 (1, 2) 3 6 (2, 0) 3 7 (2, 1) 3 8 (2, 2) 3

 규칙을 찾으면 (인덱스 // n , 인덱스 % n)(몫, 나머지)의 큰 값에서 + 1 한 값과 같다.

예를 들면 인덱스가 7이면 (7 // 3, 7 % 3) => (2, 1) 여기서 큰 값에 + 1 하면 3이 된다.

 

규칙을 잘 찾자.

'코딩테스트 연습 > Array' 카테고리의 다른 글

[Programmers] 방문길이  (1) 2024.10.09