저번 주에 집 이사로 신경쓸게 많아서 진도가 지지부진했다.
이번 주 부터 다시 속도를 붙혀야겠다.
[ 연습 문제 ( 달팽이 ) ]
- 강의 중에 강사님도 코딩 테스트때 나왔던 문제라고 했었는데, 나도 OO기업 코딩 테스트에 나왔던 문제였다
( 유명 게임회사 코딩테스트 문제였다고 하는데... 나는 유명하지 않는 기업 코테에서 봤던거 같다. 코테 문제들이 많이 상향 평준화 되었구나를 느낄 수 있었다. )
나는 그때도 못 풀었고, 지금도 못풀었다.. 반성 하고 다시 감좀 잡아야겠다. ( 코테 손 놓은지 너무 오래된거 같다... )
#include <iostream>
using namespace std;
#include <iomanip>
const int MAX = 100;
int board[MAX][MAX];
int N;
enum DIR {
RIGHT,
DOWN,
LEFT,
UP
};
void PrintBoard() {
for (int x = 0; x < N; x++) {
for (int y = 0; y < N; y++) {
cout << setfill('0') << setw(2) << board[x][y] << " ";
}
cout << '\n';
}
}
bool CanGo(int nx ,int ny) {
if (nx < 0 || nx >= N) {
return false;
}
if (ny < 0 || ny >= N) {
return false;
}
if (board[nx][ny] != 0)
return false;
return true;
}
void SetBoard() {
int dir = RIGHT;
int num = 1;
int x = 0, y = 0;
int dx[] = {0,1,0,-1};
int dy[] = {1,0,-1,0};
while (1) {
board[x][y] = num;
int next_x = x + dx[dir];
int next_y = y + dy[dir];
if (num >= N * N) {
break;
}
if (CanGo(next_x, next_y)) {
x = next_x;
y = next_y;
num++;
}
else {
dir = (dir + 1) % 4;
}
}
}
int main() {
cin >> N;
SetBoard();
PrintBoard();
return 0;
}
[ 파일 분할 관리 ]
.h (헤더파일) 에서 선언부만 넣지 않고, 정의도 같이 해줘도 된다. (선언만 하라는 법은 없다. 우리 편하라고 하는것이다)
=> 다만 선언부에서 함수를 정의하게 되면 나중에 헤더파일 include 헤서 사용할때 함수가 두번 정의되는 링킹 에러가 발생한다.
그래서 어지간하면 헤더부에 선언만 해주는게 좋다.
#pragma once
헤더파일에 포함 된 부분중에 겹치면 안되는 부분이 있는데 ( 함수 선언의 경우 여러번 선언되도 상관 없지만 )
만약에 헤더파일에 Struct 같은걸 정의했다면,
한번 include 되고, 다시 include 된다면, 재정의 됐다고 에러가 뜬다.
그래서 #pragma once 로 한번만 정의되게 해준다.
결론 : 헤더 파일은 최대한 간단 간단하게 유지시키는게 좋다.
선언만 하게끔 ( Test.h , Test.cpp )
[ 객체지향의 시작 ]
보통 멤버 변수는 m_변수이름 혹은 _변수이름 이런식으로 표기하는게 룰이다.
[ 생성자와 소멸자 #1 ]
소멸자는 오직 한개만 존재. ( 생성자는 여러개 존재 가능 )
- 복사 생성자 : 자기 자신의 클래스 ref 타입을 인자로 받는 생성자
Knight(const Knight& knight);
[ 생성자와 소멸자 #2 ]
생성자 중에서 인자를 단 1개 받는 생성자는 생성자의 역할도 하지만 타입 변환의 역할도 수행한다.
디어셈블리로 까보면 타입변환의 경우 인자를 1개 받는 생성자가 실행되는것을 알 수 있다.
컴파일러가 암시적으로 생성자를 통해 타입을 변환을 하는게 싫으면 explicit 키워드를 붙혀주면 된다.
이럴 경우
생성자 앞에
을 붙혀준다.
이렇게 되면 명시적으로 생성자의 역할만하고 암시적인 생성자 처리는 막는것이다.
하지만 그렇다고 타입 변환하는게 없어진게 아니라 암시적으로 하는것만 막은것이다.
'C++과 언리얼로 만드는 게임 개발 > Part1. C++ 문법' 카테고리의 다른 글
Day7 ( 54.46% ) (0) | 2022.03.30 |
---|---|
Day6 ( 52.67% ) (0) | 2022.03.30 |
Day4 ( 42.85% ) (0) | 2022.03.25 |
Day3 ( 37.50% ) (0) | 2022.03.24 |
Day2 ( 29.46% ) (0) | 2022.03.24 |