도전2. 달팽이 형태의 배열을 만들어 주는 프로그램을 작성해 보자.
사용자로부터 숫자n을 입력받아서 n x n 의 달팽이 배열을 출력해 주는 프로그램을 작성해 보자.
알고리즘에 대해서 생각해봅시다.
말 그대로 달팽이처럼 점점 작아지는 소용돌이를 채우면서 수를 차례로 입력하는 것입니다.
위의 그림을 화살표 따라 잘 봐주시기 바랍니다
옆으로 5 밑으로 4 왼쪽 4 위 3 오른쪽 3 밑2 왼2 위1 오른쪽1 입니다.
즉 5 4 4 3 3 2 2 1 1 인데요
기본 틀을 만들어 보면
for( ) <- 젤처음 5 한번 반복할것
for( ) <- 4 3 2 1 반복할것 (안에 반복문이 2개이므로 두번씩 된다)
for( ) <- 밑으로, 위로 가는 반복문
for( ) <- 왼쪽으로, 오른쪽으로 가는 반복문
이렇게 반복문 틀을 만들고, 세부적으로
for( ) <- 젤처음 5 한번 반복할것
for( ) <- 4 3 2 1 반복할것 (안에 반복문이 2개이므로 두번씩 된다)
for( ) <- 밑으로, 위로 가는 반복문
if(밑으로 갈때)
else(위로 갈때)
for( ) <- 왼쪽으로, 오른쪽으로 가는 반복 if(왼쪽으로 갈때)
else(오른쪽으로 갈때)
이렇게 되며, 밑, 왼쪽이 한 세트고, 위, 오른쪽을 한 세트로
스위치 변수를 설정하여, 스위치 변수가 -1일땐 밑, 왼쪽 +1일땐 위 오른쪽으로 가게 하면 됩니다..
본격적인 의사코드 입니다. 의사코드에서는 원래 프로그램 목적에 맞게
배열 길이 n을 입력받도록 하겠습니다.
배열 x, y 좌표 선언 // 달팽이 경로그리며 돌아감
배열 내용 num 선언 // 갈수록 커짐
스위치변수 -1 초기화 // -1일때 밑,왼 1일때
넉넉한 2차원 배열을 선언하고
배열의 길이 n을 입력받아
for(n번반복) // 젤처음 n 한번 반복할것
오른쪽으로 가야하므로, y좌표를 1씩, num값을 1씩 늘려가며 배열에 대입
for(n-1번 반복, n-1부터 1까지 감소)
{
for(상위 반복문 반복번만큼 반복) // 밑으로, 위로 가는 반복문
num 1씩 증가
if(스위치변수 -1일때) // 밑으로 갈때
x좌표 1씩 증가, 배열에 대입
else // 위로 갈떄
x좌표 1씩 감소, 배열에 대입
for(상위 반복문 반복번만큼 반복) // 왼쪽으로, 오른쪽으로 가는 반복
num 1씩 증가
if(스위치변수 -1일때) // 왼쪽으로 갈때
y좌표 1씩 감소, 배열에 대입
else // 오른쪽으로 갈때
y좌표 1씩 증가, 배열에 대입
스위치변수에 -1곱하기
}
배열을 출력
이정도입니다.
실제코드입니다.
중간중간에 잘 보시면
알고리즘 흐름에 맞춰 약간 순서가 바꼇습니다. (증가, 대입 부분)
전체적인 흐름은 바뀐것이 없으니까 이해하기 힘들지 않을 것입니다.
실행결과입니다.
멋지게 잘 실행되는것을 볼 수 있습니다.
이상입니다.
'IT 개발 > C' 카테고리의 다른 글
[C언어] 열혈강의 C프로그래밍(윤성우 저) 도전! 프로그래밍 THREE. 도전4 (0) | 2021.01.04 |
---|---|
[C언어] 열혈강의 C프로그래밍(윤성우 저) 도전! 프로그래밍 THREE. 도전3 (0) | 2021.01.04 |
[C언어] 열혈강의 C프로그래밍(윤성우 저) 도전! 프로그래밍 THREE. 도전1 (0) | 2021.01.04 |
[C언어] 열혈강의 C프로그래밍(윤성우 저) 도전! 프로그래밍 TWO. 도전5 (0) | 2021.01.04 |
[C언어] 열혈강의 C프로그래밍(윤성우 저) 도전! 프로그래밍 TWO. 도전4 (0) | 2021.01.04 |
최근댓글