반응형
https://codeup.kr/problem.php?id=1099&rid=0
[기초-2차원배열] 성실한 개미
C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용
codeup.kr
코드
#include <iostream>
using namespace std;
int a[100][100] = { };
int input;
int main() {
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
cin >> input;
a[i][j] = input;
}
}
int x = 2, y = 2;
while (true) {
if (a[x][y] == 2) { // 맨 처음 a[2][2]가 2일 때
a[x][y] = 9;
break;
}
else {
a[x][y] = 9;
}
if (a[x][y + 1] == 1) {
if (a[x + 1][y] == 1) { // 더이상 이동할 수 없을 때
break;
}
else if (a[x + 1][y] == 0) {
a[x + 1][y] = 9;
x = x + 1;
}
else {
a[x + 1][y] = 9; // 아래쪽에서 2를 만났을 때
break;
}
}
else if (a[x][y + 1] == 0) {
a[x][y + 1] = 9;
y = y + 1;
}
else { // 오른쪽에서 2를 만났을 때
a[x][y + 1] = 9;
break;
}
}
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
cout << a[i][j] << " ";
}
cout << "\n";
}
return 0;
}
풀이
10 * 10 크기의 미로에서 개미가 먹이를 찾아 길을 가는 것을 출력하는 문제이다.
개미는 오른쪽 혹은 아래로 이동이 가능하고 오른쪽을 먼저 체크한다. 1은 개미가 갈 수 없는 벽이고 0으로만 이동이 가능하다.
먹이 즉 2를 찾거나, 더 이상 움직일 수 없는 경우에는 개미의 이동이 멈추도록 한다.
경우의 수
- 맨 처음에 2를 만난 경우.
- 오른쪽이 0이고 오른쪽으로 이동하는 경우.
- 오른쪽이 2이고 오른쪽으로 이동 후 종료하는 경우.
- 오른쪽이 벽으로 막혀 있고 아래로 이동하는 경우.
- 오른쪽이 벽이고 아래쪽도 벽이어서 멈추는 경우.
- 오른쪽이 벽이고 아래쪽이 2여서 이동 후 종료하는 경우.
위 경우의 수에 따라 개미의 좌표를 이동시키고 그 좌표의 값에 9를 저장한다.
반응형
'문제 해결 > CodeUp' 카테고리의 다른 글
[CodeUp] [C++] 1102번 Hello, World! (줄 바꿈 버전) (0) | 2024.01.14 |
---|---|
[CodeUp] [C++] 1101번 Hello, World! (0) | 2024.01.14 |
[CodeUp] [C++] [기초 100제] 1098번 설탕과자 뽑기 (0) | 2022.12.06 |
[CodeUp] [C++] [기초 100제] 1097번 바둑알 십자 뒤집기 (0) | 2022.12.06 |
[CodeUp] [C++] [기초 100제] 1096번 바둑판에 흰 돌 놓기 (2) | 2022.12.06 |