굉장히 고민을 많이 해야했던 문제
하지만 답은 굉장히 단순했다.
매개면수 3, 2, 5 가 주어진다면 왼쪽은2차원 배열 크기, 2는 left , 3은 rignt 가 나오고 답은 아래의 배열 리턴
제한사항 n이 10의 7제곱까지 들어올 수 있다.
그렇기에 2차원 배열에 저 값을 채워넣는건 힙 메모리 오버가 발생해서 안된다.
그래서 이런 문제는 정해진 범위가 있다면 그 범위만 구하면 답이 구해진다.
1. 규칙 찾기
(1, 1) ( 1, 2 ) ( 1, 3) -> 1 2 3
( 2, 1) ( 2, 2) ( 2, 3 ) -> 2, 2, 3
( 3, 1) ( 3, 2) (3, 3) -> 3, 3, 3
크거나 같은 수가 출력이 된다.
위의 제시에서 left 가 2이고 rigt가 5 이기 때문에
이 부분만 구하면 답을 구할 수 있다.
2. left를 통해 x , y 값 구하기
일단 배열 x : 0, y : 2 를 구하고 각각 +1 x와 y중 크거나 같으면 값을 넣는다.
x 값 - > left/ 크기 +1
y 값 -> left % 크기 +1
left 가 2 이면 x : 1 , y : 3
해결 코드
class Solution {
public int[] solution(int n, long left, long right) {
int[] answer = new int[(int)(right - left) + 1];
for (int i = 0; i < answer.length; i++) {
int x = (int)(left / n + 1);
int y = (int)(left % n + 1);
left++;
answer[i] = Math.max(x, y);
}
return answer;
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
Level2 - [1차] 뉴스 클러스터링 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.05.29 |
---|---|
Level2 - 캐시 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.05.26 |
Level2 - 연속 부분 수열 합의 개 (0) | 2023.05.26 |
Level2 - 괄호 회전하기 (0) | 2023.05.25 |
Level2 - 귤 고르기 (0) | 2023.05.25 |
댓글