미로 크기의 2차원 배열을 만들고, 2중 for 문으로 각 요소의 값들을 입력받는다.
이후 무한 루프를 만들어 조건을 만족시키면 반복문을 탈출하는 구조로 코드를 구성하였다.
현재 좌표의 값이 2(먹이)면 현재 좌표를 9로 만들고 반복문을 종료한다.
이동할 위치가 0(이동가능)이면 9로 만들어 현재 위치를 이동하며, 이동할 위치가 1(벽)이면 오른쪽 또는 아래로 방향을 바꾼다. 방향을 바꿔도 이동할 위치가 1이면 반복문을 종료한다.
위 작업을 수행하는 반복문에 주석을 달아 더 자세히 설명할 것이다.
정답은 다음 코드와 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#include <stdio.h>
int main()
{
int x = 2, y = 2; // 초기 좌표값
int miro[11][11] = {}; // 미로 상자
for(int i = 1; i <= 10; i++) // 2차원 배열의 각 요소에 입력값을 받음
{
for(int j = 1; j <= 10; j++)
scanf("%d", &miro[i][j]);
}
while(1) // 무한루프
{
if(miro[x][y] == 2) // 현재 좌표가 2면
{
miro[x][y] = 9; // 현재 좌표를 9로 만들고
break; // 반복문 종료
}
miro[x][y] = 9; // 현재 좌표를 9로 만듬
if(miro[x][y+1] == 0) // 아래쪽으로 이동 가능하면
y += 1; // y좌표값을 1 증가시킴
else if(miro[x][y+1] == 1) // 아래 좌표가 벽이면
{
if(miro[x+1][y] == 1) // 오른쪽도 벽이면
break; // 갈 곳이 없으므로 반복 종료
else if(miro[x+1][y] == 2) //오른쪽으로 이동한 좌표가 2(먹이)면
{
miro[x+1][y] = 9; // 그 좌표를 9로 만들고
break; // 반복 종료
}
else // 벽도 아니고 먹이도 아니면, 1칸 오른쪽으로 이동
x += 1;
}
else if(miro[x][y+1] == 2) // 한 칸 아래 좌표가 2(먹이)면
{
miro[x][y+1] = 9; // 그 좌표애 9를 지정하고
break; // 반복문 종료
}
}
for(int i = 1; i <= 10; i++) // 위 반복문을 마친 후 미로 상자의 상태를 출력
{
for(int j = 1; j <= 10; j++)
printf("%d ", miro[i][j]);
printf("\n");
}
return 0;
}
|
cs |
'Project H4C Study Group' 카테고리의 다른 글
[Project H4C] C언어 코딩도장(8) (0) | 2021.03.05 |
---|---|
[Project H4C] C언어 코딩도장(7) (0) | 2021.03.04 |
[Project H4C][C언어] 코드업 기초 100제 1096번 (0) | 2021.02.27 |
[Project H4C][C언어] 코드업 기초 100제 1094번 (0) | 2021.02.27 |
[Project H4C][C언어] 코드업 기초 100제 1089번 (0) | 2021.02.27 |