SECTION
Published 2020. 3. 15. 23:23
[Codewar] Snail PS/Codewar

https://www.codewars.com/kata/521c2db8ddc89b9b7a0000c1/java

 

Codewars: Train your coding skills

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

 

Snail Sort

Given an n x n array, return the array elements arranged from outermost elements to the middle element, traveling clockwise.

array = [[1,2,3],
         [4,5,6],
         [7,8,9]]
snail(array) #=> [1,2,3,6,9,8,7,4,5]

For better understanding, please follow the numbers of the next array consecutively:

array = [[1,2,3],
         [8,9,4],
         [7,6,5]]
snail(array) #=> [1,2,3,4,5,6,7,8,9]

This image will illustrate things more clearly:

NOTE: The idea is not sort the elements from the lowest value to the highest; the idea is to traverse the 2-d array in a clockwise snailshell pattern.

NOTE 2: The 0x0 (empty matrix) is represented as en empty array inside an array [[]].

 

 

 

Solution

: 이전에 풀었던 달팽이 문제랑 비슷해서 이전껄 참고했다.

 

public class Snail {

    public static int[] snail(int[][] array) {
    
    int N= array.length;
    int[] list = new int[N*N];
    int cnt = 0, inc = 1;
    int a = 0, b = -1;

    if(array[0].length <= 0) { return new int[0]; }
     
    for(; N>0;) {
      for(int i=0; i<N; i++){
        b+=inc;
        list[cnt] = array[a][b];
        cnt++;
      }
      N--;
      
      for(int i=0; i<N; i++){
        a+=inc;
        list[cnt] = array[a][b];
        cnt++;
      }   
      inc*=-1;
    }
    
    return list;
   } 
}
profile

SECTION

@SectionR0

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그