6. 삼각달팽이 (프로그래머스)
by BFine반응형
가. 문제파악
1. 유형 : 배열 활용, 수학
- 처음 봤을때 수학 규칙을 찾으려고 하다보니 이해도 어렵고 구현하기도 쉽지 않았다.
- 다른사람의 풀이들을 봤는데 규칙으로 찾거나 배열을 활용해서 푼게 있었다.
- 내가봤을때 배열을 활용하는게 이문제가 원하는 부분이 아닐까? 라는 생각이 들었다.
나. 코드
1. 풀이 : 피라미드를 2차원배열로 붙이자
- 피라미드 자체로 보다보면 보기가 어렵고 1차원 배열로만 생각하게 되어버린다...
- 그림처럼 2차원배열로 생각하면 쉽다. 아래 옆 대각선 순으로 하나의 스텝으로 가져가면 된다.
import java.util.Arrays;
public class Solution {
public int[] solution(int n) {
int[][] arr = new int[n][n];
int data = 1;
int x=0,y=0;
while(n > 0){
// 아래
for (int i = 0; i < n ; i++) {
arr[x++][y] = data++;
}
x--; // 증감이 한번 더 들어감
y++; n--;
//옆
for (int i = 0; i < n; i++) {
arr[x][y++] = data++;
}
y--; // 증감
x--; y--; n--;
//대각
for (int i = 0; i < n; i++) {
arr[x--][y--] = data++;
}
x++; y++; // 증감
x++; n--; // 다음시작;
}
int[] res = new int[data-1];
int level = 0;
int idx = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <= level; j++) {
res[idx++] = arr[i][j];
}
level++;
}
return res;
}
public static void main(String[] args) {
System.out.println(Arrays.toString(new Solution().solution(5)));
}
}
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
8. 땅따먹기 (프로그래머스) (0) | 2021.04.10 |
---|---|
7. n진수게임 (프로그래머스) (0) | 2021.04.10 |
5. 가장 큰 수 (프로그래머스) (0) | 2021.04.07 |
4. 소수찾기 (프로그래머스) (0) | 2021.04.04 |
3. 124 나라의 숫자 (프로그래머스) (0) | 2021.04.03 |
블로그의 정보
57개월 BackEnd
BFine