본문 바로가기

Algorithm/Code Fights (Code Signal)

Aracade Intro #59 spiralNumbers. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

Aracade Intro #59 spiralNumbers. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive



Q.


 Construct a square matrix with a size N × N containing integers from 1 to N * N in a spiral order, starting from top-left and in clockwise direction.

입력받은 정수 N, N x N 사이즈의 매트릭스를 만드는데, 왼쪽 제일 위쪽의 숫자 1부터 시계방향의 나선(소용돌이)형으로 매트릭스를 채워나간다.

e.g.


Input -> n = 3


Output -> spiralNumbers(n) = [[1, 2, 3],

                                         [8, 9, 4],

                                         [7, 6, 5]]




 문제 풀때 처리과정을 영어로 써놨었는데 한글로는 간단하게 축약해서 적었다.


//Process

//1. Input vectorSize integer n
//2. Make 2Dimension vector with initializing 0
//3. Iterate number till n^2
// 3.1. If i = j = 0 (start)
//  3.1.1. Iterate from begin to the end jjjjjj++
//   3.1.1.1. Insert number
//   3.1.1.2. number++
// 3.2. If i < j (right upper)
//  3.2.1. Iterate from begin to the end iiiiiii++
//   3.2.1.1. Insert number
//   3.2.1.2. number++
// 3.3. If i = j != 0 (right lower)
//  3.3.1. Iterate from begin to the end jjjjjjj--
//   3.3.1.1. Insert number
//   3.3.1.2. number++ 
// 3.4. If i > j + 1 (left lower)
//  3.4.1. Iterate from begin to the end iiiiii--
//   3.4.1.1. Insert number
//   3.4.1.2. number++ 
// 3.5. If i = j + 1 (left upper)
//  3.5.1. Iterate from begin to the end jjjjjjj++
//   3.5.1.1. Insert number
//   3.5.1.2. number++
//4. Return vector
//5. Finish
//


//처리과정
//1. 사이즈 정수 N을 입력받는다.
//2. 0부터 N^2 까지 반복한다.
// 2.1. 현재위치를 확인해서
//  2.1.1. 시작부분이면 - 우로 채워나간다.
//  2.1.2. 우측 상단이면 - 아래로 채워나간다.
//  2.1.3. 우측 하단이면 - 좌로 채워나간다.
//  2.1.4. 좌측 하단이면 - 위로 채워나간다.
//  2.1.5. 좌측 상단이면 - 우로 채워나간다.
//3. 결과물을 반환한다.
//4. 끝낸다.




Code.. Lemme see code!!!!!


코드.. 코드를 보자!!!!!





std::vector<std::vector<int>> spiralNumbers(int n) {


    std::vector<std::vector<int>> returnVector( n, std::vector<int>(n));

    

    int number = 1;

    int endCount = n;

    int i = 0;

    int j = 0;

    int max = pow(n, 2);

    while (number < max) 

    {

        if (i == j & j == 0) 

        {

            while (j < endCount) 

            {

                returnVector[i][j] = number;

                ++number;

                ++j;

            }

            --number;

            --j;

            cout << 000 << " num >> " << number << "  i >> " << i << " j >> " << j << " ec >> " << endCount << endl;

        }

        if (i < j) 

        {

            int temp0 = endCount;

            while (temp0 > 0) 

            {

                returnVector[i][j] = number;

                ++number;

                ++i;

                --temp0;

            }

            --number;

            --i;

            cout << 111 << " num >> " << number << "  i >> " << i << " j >> " << j << " ec >> " << endCount << endl;

        }

        if (i == j && j != 0) 

        {

            int temp1 = endCount;

            while (temp1 > 0) 

            {

                returnVector[i][j] = number;

                ++number;

                --j;

                --temp1;

            }

            --number;

            --endCount;

            ++j;

            cout << 222 << " num >> " << number << "  i >> " << i << " j >> " << j << " ec >> " << endCount << endl;

        }

        if (i > j+1) {

            int temp2 = endCount;

            while (temp2 > 0) {

                returnVector[i][j] = number;

                ++number;

                --i;

                --temp2;

            }

            --number;

            ++i;

            cout << 333 << " num >> " << number << "  i >> " << i << " j >> " << j << " ec >> " << endCount << endl;

        }

        if (i = j+1) {

            int temp3 = endCount;

            while (temp3 > 0) 

            {

                returnVector[i][j] = number;

                ++number;

                ++j;

                --temp3;

            }

            --number;

            --endCount;

            --j;

            cout << 444 << " num >> " << number << "  i >> " << i << " j >> " << j << " ec >> " << endCount << endl;

        }

    }

    return returnVector;

}





Something else you might like..




2018/12/26 - [Programming/Design Pattern ] - Perfecting OO's Small Classes and Short Methods. 완벽한 객체지향의 작은 클래스와 짧은 메소드, Book:ThoughtWorks Anthology, Java,cpp,자바,oop,좋은코드,객체지향프로그래밍


2019/01/08 - [분류 전체보기] - Aracade Intro #58 messageFromBinaryCode. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/07 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #57 fileNaming. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/04 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #56 digitsProduct. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제,문제해결능력,example, c++ java c# scalar

2019/01/04 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #55 differentSquares. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제,문제해결능력,example, c++ java c# scalar

2019/01/02 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #54 sumUpNumbers. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제,문제해결능력,example, c++ java c# scalar

2019/01/02 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #53 validTime. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제,문제해결능력,example, c++ java c# scalar

2019/01/02 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #52 longestWord. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2019/01/01 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #51 deleteDigit. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/31 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #50 chessKnight. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/28 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #49 lineEncoding. Algorithm, 알고리즘 문제풀이, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/26 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #48 isDigit. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/26 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #47 isMAC48Address. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/25 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #46 electionsWinners. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/21 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #45 buildPalindrome. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar


2018/12/20 - [Programming/Java] - How to convert file to byte array (byte[]) example, 파일 객체 바이트로 변환하기 예제코드, java/cpp/c++/scalar


2018/12/18 - [Programming/Java] - How to access controller from existing Pane in JavaFX, pane에서 해당 controller로 접근하기, java/cpp/c++/fx/gui


2018/12/13 - [Computer/Linux] - How to check ongoing live process on Linux cmd, 리눅스 커맨드창에서 어떤 프로세스가 실행중인지 확인하기, java, ubuntu, cpp



2019/01/02 - [Life/Health care] - Taurine 타우린 usage/side effects/dosage/fatigue/supplement,효능/부작용/성인,소아 용법/건강/피로회복/영양제

2019/01/08 - [Life/Health care] - VitaminD 비타민디 usage/side effects/dosage/fatigue/supplement/antioxidant/효능/부작용/성인,소아 용법/건강/피로회복/영양제/항산화

2018/12/27 - [Life/Health care] - Milk-Thistle 밀크시슬 usage/side effects/dosage/fatigue/supplement,효능/부작용/성인,소아 용법/건강/피로회복/영양제

2018/12/16 - [Life/Health care] - L-Arginine 아르기닌 usage/side effects/dosage 효능/부작용/성인,소아 용법(2)

2018/12/06 - [Life/Health care] - Vitamin C 비타민 씨 usage/side effects/dosage 용법/효능/부작용

2018/12/02 - [Life/Health care] - Maca 마카 usage/side effects/dosage 효능/부작용/용법