프로그래머스 n^2 자르기

KHW·2022년 2월 10일
0

코딩테스트

목록 보기
17/17

문제

40분
100/100

풀이방법

이런식으로 직접 표현했다.
첫번째줄 : 나오는 값 숫자
두번째줄 : index
세번째줄 : /4했을때
네번째줄 : %4했을때

function solution(n, start, end) {
    const answer = [];
    while(start<=end){
        let divide = Math.floor(start/n)
        let remain = Math.floor(start%n)
        if(divide >= remain)
            answer.push(divide+1)
        else
            answer.push(divide + 1 + remain-divide)
        start++;
    }
    return answer
}

규칙성을 찾아 풀었다.

다른 사람의 풀이

function solution(n, left, right) {
  const length = right - left + 1;
  const answer = Array.from({ length }, (_, index) => ((index + left) % n) + 1);

  for (let i = 0; i < length; i++) {
    const currentIndex = i + left;
    const number = Math.floor(currentIndex / n) + 1;
    const isSequentialNumber = currentIndex % n >= number;
    if (isSequentialNumber) {
      continue;
    }
    answer[i] = number;
  }

  return answer;
}

링크

이런식으로 풀었는데
기본으로 전부 가로를 순차적으로 맞췄다.
예를들어 n=3이면 [[1,2,3],[1,2,3],[1,2,3]] 이런식으로 맞춰 주었다.

그 후에 순차적이지 않은 부분에 대해서만 해당 줄에 있는 행을 값을 넣어주면 문제와 같이 만들 수 있다.

profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자

0개의 댓글