✴️ 문제
https://school.programmers.co.kr/learn/courses/30/lessons/87390

✴️ 문제 풀이
2차원 배열을 따로 만들어주지 않고도 탐색이 가능하다.
n x n 배열일 때, ( i / n ) + 1은 행이 되고, ( i % n ) + 1은 열이 된다.
그리고 해당 인덱스의 값은 행과 열 중 큰 값을 가지게 된다.
int row = (int)(i/n) + 1; // 행
int col = (int)(i%n) + 1; // 열
answer[idx++] = Math.max(row,col);
이 문제에서 주의해야하는 부분은 left와 right값이 int가 아닌 long으로 주어진다는 점? 정도인 것 같다
형변환이 필요한 문제였다

✴️ 전체 코드 (Java)
import java.util.*;
class Solution {
public int[] solution(int n, long left, long right) {
int[] answer = new int[(int) right - (int)left + 1];
int idx = 0;
for(long i=left; i<=right; i++){
int row = (int)(i/n) + 1; // 행
int col = (int)(i%n) + 1; // 열
answer[idx++] = Math.max(row,col);
}
return answer;
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 주식 가격 (Lv.2) (0) | 2025.04.02 |
---|---|
[프로그래머스] 방문 길이 (Lv.2) (0) | 2025.04.01 |
[프로그래머스] 튜플 (Lv.2) (0) | 2025.03.29 |
[프로그래머스] 캐시 (Lv.2) (0) | 2025.03.28 |
[프로그래머스] 연속 부분 수열 합의 개수 (Lv.2) (1) | 2025.03.26 |