문제 : 삼각 달팽이

풀이 방법
1. 자바는 일반적인 c 언어 형식의 2차원 배열이 존재하지 않는다는 것을 배웠다.
이것을 활용하여 피라미드 형태의 배열을 만들 수 있다.
2. 삼각 달팽이의 숫자는 반시계 방향으로 위에서부터 가장 끝에서 마지막으로 증가하며 이동한다
증가하는 값을 만들어 놓고 왼쪽라인 밑라인 오른쪽라인을 순서대로 배열에 대입하면 된다.
소스 코드
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
class Solution {
public int[] solution(int n) {
int[] answer = {};
ArrayList<ArrayList<Integer>> lists = new ArrayList<>();
for(int i=1; i<=n; i++) {
ArrayList<Integer> list = new ArrayList<>(Collections.nCopies(i, 0));
lists.add(list);
}
int recordNumber = 1;
int leftIndex = -1, downIndex = 0;
for(int i=n; i>0; i-=3) {
// Left Line
for(int u = 0; u < i; u++) {
lists.get(++leftIndex).set(downIndex, recordNumber++);
}
// Down Line
for(int u = 0; u < i - 1; u++) {
lists.get(leftIndex).set(++downIndex, recordNumber++);
}
// Right Line
for(int u = 0; u < i - 2; u++) {
lists.get(--leftIndex).set(--downIndex, recordNumber++);
}
}
ArrayList<Integer> tmpList = new ArrayList<>();
lists.forEach(tmpList::addAll);
answer = tmpList.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
'정리 전 게시글 > 공부 관련' 카테고리의 다른 글
| [백준 1002번 문제, JAVA] 터렛 (0) | 2023.02.23 |
|---|---|
| [Java] 안드로이드 채팅 화면을 리사이클러뷰와 뷰바인딩을 이용해서 만들어보자 (1) | 2023.02.06 |
| [프로그래머스 Level 2, Java] 이진 변환 반복하기 (0) | 2023.01.15 |
| [프로그래머스 Level 2, Jave] 귤 고르기 (0) | 2023.01.12 |
| [프로그래머스 Level 1, Java] 크기가 작은 부분문자열 (0) | 2023.01.12 |