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 효능/부작용/용법