초기 네이버 기록/알고리즘(C)

백준 (C언어) (구현) 게임개발 -방향벡터 및 맵 탐색

뜨거운 개발자 2023. 1. 8. 13:15
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int length, width;//세로, 가로
	int x, y, direction;//방향은 0:북, 1:동, 2:남, 3:서
	int** map;// 세로 가로, 0육지 1바다
	scanf("%d %d", &length, &width);
	map = (int**)malloc(sizeof(int*) * (length));
	//int move[4][2] = {{0,-1}, {1,0}, {0,1}, {-1,0}};//북, 동, 남 ,서
	int move[4][2] = { {0,1},  {-1,0} ,{0,-1} ,{1,0} };//북,서,남,동
	scanf("%d %d %d ", &x, &y, &direction);
	for (int i = 0; i < length; i++)
	{
		map[i] = (int*)malloc(sizeof(int) * width);
		for (int j = 0; j < width; j++)
		{
			scanf("%d", &map[i][j]);
		}
	}
	//for (int i = 0; i < length; i++)
	//{

	//	for (int j = 0; j < width; j++)
	//	{
	//		printf("map[%d][%d]%d\n", i, j, map[i][j]);
	//	}
	//	printf("\n");
	//}
	//int check = 1;
	int count = 1;
	while (1)
	{

		for (int k = 0; k < 4; k++)
		{
			map[x][y] = 1;
			//if(check)
			//	k = direction;
			//printf("zzzzzzzzzz%d %d\n", move[k][0], move[k][1]);
			//printf("aaaaaaaaaaaa:%d\n", map[x + move[k][0]][y + move[k][1]]);
			if (map[x + move[k][0]][y + move[k][1]] == 0)
			{
				count++;
				x += move[k][0];
				y += move[k][1];
				break;
			}
			if (k == 3)
			{
				printf("count :%d\n", count);
				return;
			}
			//check = 0;
		}

		printf("%d ,%d\n", x, y);
	}
}

갔던 곳을 또 가지 않는 부분을 1로 채우는 부분이 인상적이었고 살짝 헷갈린게 처음에 거쳤던 길을 1이라고 생각을 안 했어서 틀렸었다.

728x90