typedef struct POINT
{
int x, y;
POINT() {}
POINT(int x, int y) { this->x = x, this->y = y; }
} POINT;
...
int haystack[HEIGHT][WIDTH];
int center_x, center_y;
int x, y;
POINT map[8];
int needle_count = 0;
int needle;
...
// 무분기 버전
// 0 1 2
// 3 4 5 여기서 4 의 위치가 center_x, center_y
// 6 7 8
x = center_x - 1;
y = center_y - 1;
map[needle_count] = POINT( x, y ); // 0
needle_count += haystack[y][x] == needle;
map[needle_count] = POINT( x, center_y ); // 3
needle_count += haystack[center_y][x] == needle;
map[needle_count] = POINT( center_x, y ); // 1
needle_count += haystack[y][center_x] == needle;
x = center_x + 1;
map[needle_count] = POINT( x, y ); // 2
needle_count += haystack[y][x] == needle;
map[needle_count] = POINT( x, center_y ); // 5
needle_count += haystack[center_y][x] == needle;
y = center_y + 1;
map[needle_count] = POINT( x, y ); // 8
needle_count += haystack[y][x] == needle;
map[needle_count] = POINT( center_x, y ); // 7
needle_count += haystack[y][center_x] == needle;
x = center_x - 1;
map[needle_count] = POINT( x, y ); // 6
needle_count += haystack[y][x] == needle;
쉽죠~
아리아스타크 찾기
ㄴ 헤헷
Point는 구조체 인가여??
typedef 하신건가
응 했다 친거.
typedef struct POINT { int x, y; } POINT; 이거 치기 싫었음. ㅋㄷ
예쁘게 짜면 생성자 만들어서 그냥 초기화 하면되는뎅 뭐 요점은 그게 아니라 귀찮아서리.
이하동문
find_x, find_y 를 중심으로 한 여덟방향 배열 위치에서 needle 을 찾으면 map 에다가 하나씩 그 좌표를 기록하고 needle_count 를 증가시키는 코드
center_x, center_y 로 네이밍 변경~
여기 사용된 최적화 트릭이 몇 가진지 아는 사람?
구조체 형변환안해도대나
띨빡한 컴파일러에선 map 배열의 x, y 에 일일이 대입해주는게 성능이 낫겠지만 : )
map 이란 네이밍이 맘에 안드네~ needle_points 라고 할껄~