문제
문제링크
접근
- 처음에는 아래와 같이 구현하지 않고, 그림에 현혹되어 board라는 2차원 배열을 만들고 해당 값들을 대입하였다. 그리고 대충 left, right 좌표를 2차원 배열 좌표 값으로 변환하고 안에 있는 값들을 반환하였다. 물론 이것도 정답으로 통과 되었다.
- 그런데 질문하기 게시판에서 다른 사람들 코드를 보니까 한 눈에 봐도 짧길래 아 따로 2차원 배열을 만든 것이 아니구나 직감하고 돌아와서 두 반복문을 합쳐서 아래와 같이 작성하였다.
소스 코드
class Main {
public static void main(String[] args) throws Exception {
int n = 4;
long left = 7;
long right = 14;
Solution sol = new Solution();
System.out.println("result : " + sol.solution(n, left, right));
}
}
class Solution {
public int[] solution(int n, long left, long right) {
int[] answer = new int[(int) (right-left+1)];
int currIdx = 0;
for(long i = left; i<=right;i++){
answer[currIdx++] = Math.max((int)(i/n+1) , (int)(i%n+1));
}
return answer;
}
}