코드업(CodeUp) 풀이/C언어 기초 100제

코드업[CodeUp] (C) 1099번 풀이

개발윗미 2021. 8. 23. 15:40

C로 구현한 1099번 성실한 개미 문제 풀이입니다.

 

https://codeup.kr/problem.php?id=1099 

 

[기초-2차원배열] 성실한 개미

C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요.  - 모든 내용

codeup.kr


#include <stdio.h>

int main() {
	int p[11][11] = {0, };
	for(int i=1; i<=10; i++) {
		for(int j=1; j<=10; j++) {
			scanf("%d", &p[i][j]);
		}
	}
	
	int x = 2;
	int y = 2;
	while(1) {
		if(p[x][y] == 0) {
			p[x][y] = 9;
			y++ ;
		}
		if(p[x][y] == 1) {
			y-- ;
			x++ ;
		}
		if(p[x][y] == 2) {
			p[x][y] = 9;
			break;
		} else if (p[x][y+1] == 1 && p[x+1][y] == 1) {
			if(p[x][y] == 0)
				p[x][y] = 9;
			break;
		}
	}
	
	for(int i=1; i<=10; i++) {
		for(int j=1; j<=10; j++) {
			printf("%d ", p[i][j]);
		}
		printf("\n");
	}
}

 

먼저 10 * 10 크기의 미로 상자의 구조와 먹이의 위치를 입력받는다. 문제에서 개미는 (2, 2)에서 출발하기 때문에

 

초기 좌표 x, y 값을 각각 2로 설정한다. while문 내에서는 해당 좌표가 0이라면 갈 수 있는 곳이기 때문에

 

해당 좌표의 값을 9로 변경한 후 오른쪽으로 움직이기 위해 y값을 1 증가시킨다.

 

만약 해당 좌표가 1이라면 벽 또는 장애물로 인해 갈 수 없기 때문에 y값을 감소시켜 다시 되돌아온 후 

 

아래쪽으로 이동하기 위해 x의 값을 증가시킨다.

 

만약 해당 좌표가 2라면 먹이에 해당하기 때문에 해당 좌표를 9로 변경한 후 반복문을 빠져나온다. 

 

else if 문은 문제에서 제시한 바와 같이 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우에 

 

더이상 이동하지 않고 그 곳에 머무르기 위해 작성한다.