2024. 12. 19. 19:12ㆍ코딩테스트 리뷰(프로그래머스)/코딩 기초 트레이닝 with Java
Day 25 이차원 리스트(배열)
1) 정수를 나선형으로 배치하기
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
int num = 1;
int top = 0, bottom = n-1, left = 0, right = n-1;
while( num <= n * n) {
for( int i = left; i <= right; i++ ) {
answer[top][i] = num++;
}
top++;
for( int i = top; i <= bottom; i++ ) {
answer[i][right] = num++;
}
right--;
for( int i = right; i >= left; i-- ) {
answer[bottom][i] = num++;
}
bottom--;
for( int i = bottom; i >= top; i-- ) {
answer[i][left] = num++;
}
left++;
}
return answer;
}
}
풀이 방법
더 쉽고 간단하게 하려다가 머리가 엉켜서 한시간을 넘게 고민하다가 다른 것도 진행해야 된다 생각해서 찾아보았다.
일단 각 배열의 위, 아래, 오른쪽, 왼쪽을 만들어두고, 각 방향으로 진행을 시도 한다고 생각하면된다.
처음으로 왼쪽에서 오른쪽으로 진행을 하면서 가장 위에 이기 때문에 answer[top] 을 사용한다.
->
오른쪽 끝에 도달하면 이제 위에서 아래로 진행을 한다. 오른쪽 부분을 작성하기 때문에 answer[i][right]을 사용한다.
V
오른쪽 맨 아래 도달하면 오른쪽에서 왼쪽으로 진행을 하고 밑에 작성이 되기 때문에 answer[bottom]을 사용한다.
<-
마지막 과정으로 왼쪽 맨 아래에서 위로 진행을 한다.
왼쪽에 작성되기 때문에 answer[i][left]을 사용한다.
^
[프로그래머스] Lv.0 정수를 나선형으로 배치하기.java
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
velog.io
2) 특별한 이차원 배열2
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
class Solution {
public int solution(int[][] arr) {
boolean answer = true;
for( int i = 0; i < arr.length; i++ ) {
for( int j = 1+i; j < arr.length; j++ ) {
if( arr[i][j] != arr[j][i] ) answer = false;
}
}
return answer ? 1 : 0;
}
}
풀이 방법
해당 문제는 단순하게 별 출력하는 것을 생각하면 좋을듯 싶다.
****
***
**
*
이런 모양의 별을 찍어야된다고 생각하면 된다.
3) 정사각형으로 만들기
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
class Solution {
public int[][] solution(int[][] arr) {
int[][] answer = arr.length > arr[0].length ? new int[arr.length][arr.length] : new int[arr[0].length][arr[0].length];
for( int i = 0; i < arr.length; i++ ) {
for( int j = 0; j < arr[0].length; j++ ) {
answer[i][j] = arr[i][j];
}
}
return answer;
}
}
풀이 방법
int 배열은 초기화할 때 전부 0으로 초기화가 된다.
추가로 삼항연산자가 초기화 할 때도 사용이 가능한지는 처음 알았다.
4) 이차원 배열 대각성 순회하기
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
class Solution {
public int solution(int[][] board, int k) {
int answer = 0;
for( int i = 0; i < board.length; i++ ) {
for( int j = 0; j < board[0].length; j++ ) {
if( i + j <= k ) answer += board[i][j];
}
}
return answer;
}
}
느낀점
벌써 0레벨에서 버벅이면 큰일났다고 생각하는데, 기초가 부족한가 생각이 든다.
1레벨은 언제 시작하나 싶다..
기초 공부를 좀 찾아서 해봐야겠다.
'코딩테스트 리뷰(프로그래머스) > 코딩 기초 트레이닝 with Java' 카테고리의 다른 글
| [프로그래머스] 코딩테스트 입문 Day 13 with Java (1) | 2025.01.06 |
|---|---|
| TIL) 코딩테스트 입문 Day 9 ~ 10 with Java (4) | 2024.12.24 |
| TIL) 프로그래머스 기초 트레이닝 21~22 Day & 입문 트레이닝 5~6 Day (3) | 2024.12.13 |
| 코딩 기초 트레이닝 Day 14 with Java (3) | 2024.05.22 |
| 코딩 기초 트레이닝 Day 13 with Java (2) | 2024.05.15 |