정체불명의 모모
강의 내용 정리(Section3_8/달팽이 문제) 본문
강의 중 배운 내용과 추가적으로 배워야 할 부분들을 정리한 메모장 입니다.
강의 : (인프런) 게임 프로그래머 입문 올인원
◇ 달팽이 문제 코드
#include <iostream>
#include <iomanip>
using namespace std;
const int MAX = 100;
int board[MAX][MAX];
int N;
enum DIR
{
RIGHT = 0,
DOWN = 1,
LEFT= 2,
UP = 3,
};
void printBoard()
{
for(int y = 0; y < N ; y++)
{
for(int x = 0; x < N ; x++)
{
// setfill , setw 표현 형식(0을 2개로 나오게 표현)
cout << setfill('0') << setw(2) << board[y][x] << " ";
}
cout << endl;
}
}
bool CanGo(int y , int x)
{
if(y < 0 || y >= N)
return false;
if(x < 0 || x >= N)
return false;
if(board[y][x] != 0)
return false;
return true;
}
void SetBoard2()
{
int dir = RIGHT;
int num = 1;
int y = 0;
int x = 0;
// 방향에 따른 값 변경
int dy[] = {0,1,0,-1}; // RIGHT , DOWN , LEFT , UP 일 경우 값의 변경
int dx[] = {1,0,-1,0};
while(true)
{
board[y][x] = num;
// 빠져나가는 조건부
if(num == N*N)
break;
int nextY = y + dy[dir];
int nextX = x + dx[dir];
if(CanGo(nextY, nextX))
{
y = nextY;
x = nextX;
num++;
}
else
{ // 방향 enum 값
dir = (dir + 1) % 4;
}
}
}
int main()
{
cin >> N;
SetBoard();
printBoard();
}
나중에 참조하기 좋을 듯한 코드여서 따로 포스팅 하였습니다.
'프로그래밍(c++) > 인프런 강의 정리(C++)' 카테고리의 다른 글
강의 내용 정리(Section5 / 버그 유형) (0) | 2024.05.29 |
---|---|
강의 내용 정리(Section5 / 동적 할당 및 캐스팅 등) (0) | 2024.05.29 |
강의 내용 정리(Section_3/포인터, const, 참조 등) (1) | 2024.05.17 |
강의 내용 정리(Section3_5/문자열 예제 코드 분석) (0) | 2024.05.17 |
강의 내용 정리(섹션2/함수 기초, 스택 메모리와 스택 프레임) (0) | 2024.05.13 |
Comments