문제
https://school.programmers.co.kr/learn/courses/30/lessons/87390
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
function solution(n, left, right) {
let answer = [];
for (let i = left; i <= right; i++) {
answer.push(Math.max(Math.floor(i / n), i % n) + 1);
}
return answer;
}
- left 에서 right 만큼의 범위를 반복하면서 현재 위치인 i를 구해준다.
- 2차원 배열의 각 좌표에는 행 번호가 들어가거나, 현재 열 번호 둘 중 더 큰 값이 들어가게 된다.
- 예를 들여 현재 i 가 3이라면 arr[i][i] 까지는 3이 들어가고, 그 뒤부터는 4,5 ... 이렇게 열 번호가 들어가게 된다.
- 현재 위치 i를 기준으로 행과 열을 구하는 방법은 아래와 같다. 이 두 값을 구해 더 큰 쪽을 1차원 배열에 push 하면 된다.
- 행 : Math.floor(i/n)
- 열 : i % n
- 처음에 lt의 좌표값을 구해 2차원 배열을 만든 뒤 직접 값을 구하려고 했는데, 해당 좌표의 값에서 규칙을 찾을 수 있기 때문에 몇 행 몇 열에 위치한 값이 어떠한 값인지만 잘 파악하면 풀 수 있는 문제였음
'Algorithm & 자료구조 > 알고리즘 w.JavaScript' 카테고리의 다른 글
[알고리즘 JS] 타겟 넘버 (프로그래머스 Lv.2) (0) | 2023.01.31 |
---|---|
[알고리즘 JS] 프린터 (프로그래머스 Lv.2) (0) | 2023.01.31 |
[알고리즘 JS] 신고 결과 받기 (프로그래머스 Lv.1) (0) | 2023.01.17 |
[알고리즘 JS] 햄버거 만들기 (프로그래머스 Lv.1) (3) | 2023.01.16 |
[알고리즘 JS] 성격 유형 검사하기 (프로그래머스 Lv.1) (0) | 2023.01.15 |