[프로그래머스 Level 2, Java] 삼각 달팽이

2023. 1. 15. 23:28·정리 전 게시글/공부 관련

문제 : 삼각 달팽이


풀이 방법

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
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • [백준 1002번 문제, JAVA] 터렛
  • [Java] 안드로이드 채팅 화면을 리사이클러뷰와 뷰바인딩을 이용해서 만들어보자
  • [프로그래머스 Level 2, Java] 이진 변환 반복하기
  • [프로그래머스 Level 2, Jave] 귤 고르기
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (279)
      • 논문 (0)
      • Roboracer (2)
      • 개발 아무거나 (1)
      • 일상 아무거나 (2)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리반응형2스킨편집
    C언어
    C++강좌
    캡스톤디자인
    마크
    컨텍스트스위칭
    프로그래머스
    티스토리HTML
    안드로이드
    티스토리스킨편집
    이것이자바다확인문제
    이것이자바다
    빅데이터공모전
    이것이자바다연습문제
    c언어초보
    반복하지않는수
    마크스크립트
    공개SW개발자대회
    자바
    마인크래프트강화스크립트
    콜라츠추측
    스크롤바CSS
    마인크래프트스크립트
    일본규슈공업대학교
    C언어강좌
    파이어베이스
    파이썬
    프로그래머스PCCE
    마인크래프트
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[프로그래머스 Level 2, Java] 삼각 달팽이
상단으로

티스토리툴바