[Java] 특별한 이차원 배열1
2025. 10. 14. 18:45ㆍ알고리즘
728x90
반응형
문제 설명
정수 n이 매개변수로 주어질 때, 다음과 같은 n × n 크기의 이차원 배열 arr를 return 하는 solution 함수를 작성해 주세요.
- arr[i][j] (0 ≤ i, j < n)의 값은 i = j라면 1, 아니라면 0입니다.
내코드
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++) {
answer[i][j] = i == j ? 1 : 0;
}
}
return answer;
}
}
답은 맞았지만 정말 기본적인 부분을 놓치고 있었음
Java에서 int[]나 int[][] 같은 기본형 배열은 자동으로 0으로 초기화
즉 new int[5] 는 {0,0,0,0,0}로 셋팅이 된다. 그렇다면 for문을 1번만 돌려도 됬었다는 얘기
내 코드에서는 else 분기 로직으로 0 을 계속 할당해주고 있었다
개선된 코드
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
for(int i=0; i<n; i++){
answer[i][i] = 1;
}
return answer;
}
}
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
- 배열의 기본값 0이 이미 있기 때문에 1만 할당
추가적으로 반대 대각선(↙) 으로 바꿔도 보았다.
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
for(int i=0; i<n; i++){
answer[i][n-1-i] = 1; // 반대 대각선에만 1
}
return answer;
}
}
0 0 0 1
0 0 1 0
0 1 0 0
1 0 0 0
- i + j == n - 1 조건을 만족하는 위치가 반대 대각선
728x90
반응형
'알고리즘' 카테고리의 다른 글
| [Java] 프로그래머스 햄버거 만들기 (0) | 2025.11.04 |
|---|---|
| [Java] 프로그래머스 둘만의 암호 (0) | 2025.11.02 |
| [Java] 프로그래머스 숫자 짝꿍 (0) | 2025.11.01 |
| [Java] 덧칠하기 (0) | 2025.10.19 |
| [Java] 배열 만들기 4 (0) | 2025.10.15 |