Deff_Dev
[코드업] 성실한 개미 (C++) 본문
문제
이 문제는 0 (길), 1(벽), 2(먹이)로 이루어진 10 * 10 맵에서 개미가 (2,2)에서 출발할 때, 개미의 이동이 멈추는 상황의 맵을 출력하는 문제다.
개미는 오른쪽으로만 이동하며, 만약 개미의 오른쪽에 벽(1)이 있을 경우 아래로 이동한다.
먹이(2)를 찾거나 (9,9)로 이동한다면 그 자리에서 더 이상 이동하지 않고 머무르며, 개미가 이동한 자리는 9로 표시될 때, 개미가 움직임을 멈췄을 때의 맵을 출력한다.
풀이
맵을 입력 받고 while문을 이용하여 개미를 오른쪽 혹은 아래로 이동시키고 개미가 먹이를 찾았거나 더 이상 움직일 수 없을 때 break 하는 방법으로 풀이했다.
#include <iostream>
// https://codeup.kr/problem.php?id=1099&rid=0
using namespace std;
int main() {
int map[11][11], x = 2, y = 2;
// 맵 입력
for (int i = 1; i < 11; i++) {
for (int j= 1; j < 11;j++) {
cin >> map[i][j];
}
}
// 개미 이동
while (true) {
// 먹이를 찾았거나 더 이상 움직일 수 없을 때
if (map[x][y] == 2 || (x == 9 && y == 9)) {
map[x][y] = 9;
break;
}
map[x][y] = 9;
// 오른쪽이 막혀있다면 아래로
if (map[x][y + 1] == 1) {
x++;
}
else { // 오른쪽으로
y++;
}
}
// 출력
for (int i = 1; i < 11; i++) {
for (int j = 1; j < 11; j++) {
cout << map[i][j] << " ";
}
cout << endl;
}
return 0;
}
'코딩테스트 > 코드업' 카테고리의 다른 글
[코드업] 진격 후 결과 (C++) (0) | 2024.03.27 |
---|---|
[코드업] 생명 게임 1 (C++) (2) | 2024.03.27 |
[코드업] 지뢰 찾기 1 (C++) (4) | 2024.03.26 |
[코드업] 설탕과자 뽑기 (C++) (0) | 2024.03.24 |
[코드업] 주사위를 2개 던지면 ? (C++) (0) | 2024.03.24 |