제이슨의 개발이야기

프로그래머스 코틀린 삼각 달팽이 본문

코딩테스트

프로그래머스 코틀린 삼각 달팽이

제이쓰은 2022. 5. 4. 22:42
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/68645

 

코딩테스트 연습 - 삼각 달팽이

5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11]

programmers.co.kr

 

문제 설명

정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.


제한사항
  • n은 1 이상 1,000 이하입니다.

입출력 예nresult
4 [1,2,9,3,10,8,4,5,6,7]
5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9]
6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11]

 

 


class Solution {

    fun solution(n: Int): IntArray {


        var answer = ArrayList<Int>()
        var arr  : Array<IntArray> = Array(n){IntArray(n)}

        var dir = arrayOf(arrayOf(1,0), arrayOf(0,1), arrayOf(-1,-1))
        var dirIdx = 0
        var x = 0
        var y = 0
        var num = 1
        var moveMax = n
        var count = 0
        while (moveMax!=0){
            arr[x][y]= num++

            count++
            if(count==moveMax){
                dirIdx++
                count=0
                moveMax--
            }
            x += dir[dirIdx%3][0]
            y += dir[dirIdx%3][1]
        }


for(i in 0 until n){
    for(j in 0 until n){
        if(arr[i][j]!=0){
            println(arr[i][j])
            answer.add(arr[i][j])
        }
    }
}
        return answer.toIntArray()
    }

}
fun main(){
Solution().solution(4)
}

 

 

 

 

 

728x90
반응형