Deff_Dev

[코드업] 성실한 개미 (C++) 본문

코딩테스트/코드업

[코드업] 성실한 개미 (C++)

Deff_a 2024. 3. 25. 13:43
 

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

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

codeup.kr

문제

이 문제는 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;
}

 

 

 

CodingTestPractice/CodeUp/2차원 배열/성실한 개미.cpp at main · seungdo1234/CodingTestPractice

코딩 테스트 연습. Contribute to seungdo1234/CodingTestPractice development by creating an account on GitHub.

github.com