https://school.programmers.co.kr/learn/courses/30/lessons/87390
코딩테스트 연습 > 월간 코드 챌린지 시즌3 > n^2 배열 자르기
난이도: LEVEL2
알고리즘 유형: 구현
문제 풀이
left, right 좌표는 n*n 2차원 배열에서 좌표를 쉽게 구할 수 있다.
행 순서대로 하나씩 이어 붙이는 순서이기 때문에
1차원 배열에서 index가 k이면
2차원 배열에서 행은 k / n 열은 k % n 이다.
그럼 예시로 나온
n = 3 left = 2 right = 5를 2차원 배열에서의 좌표로 변환해 보겠다.
left
x = 2 / 3 = 0 y = 2 % 3 = 2 → (0, 2)
right
x = 5 / 3 = 1 y = 5 % 3 = 2 → (1, 2)
2차원 배열의 숫자가
1 2 3
2 2 3
3 3 3
이런 순서여서
해당 좌표의 숫자를 구하는 식을 세우면 Math.max(x, y) + 1 이다.
x = 행 y = 열
정답 코드
class Solution {
public int[] solution(int n, long left, long right) {
int [] answer = new int [(int)(right - left) + 1];
int cnt = 0;
for(long i = left; i <= right; i++){
answer[cnt++] = (int) Math.max(i / n, i % n) + 1;
}
return answer;
}
}
'Algorithm > Programmers Java' 카테고리의 다른 글
[JAVA] 프로그래머스 LEVEL2 문자열 압축 (1) | 2024.10.16 |
---|---|
[JAVA] 프로그래머스 LEVEL2 2개 이하로 다른 비트 (1) | 2024.10.16 |
[JAVA] 프로그래머스 LEVEL2 괄호 회전하기 (1) | 2024.10.14 |
[JAVA] 프로그래머스 LEVEL2 튜플 (1) | 2024.10.14 |
[JAVA] 프로그래머스 LEVEL2 롤케이크 자르기 (1) | 2024.10.14 |