[CodeUp] 성실한 개미

김태민·2022년 3월 30일
0

알고리즘

목록 보기
34/77

mingssssss

1. 문제


2. 코드

import java.util.Scanner;

public class TestCase {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in); // Scanner 선언

		int[][] matrix = new int[10][10]; // 미로 상자 배열 생성

		// 미로 상자 입력
		for (int i = 0; i <= matrix.length - 1; i++) {

			String str = sc.nextLine();
			String[] str_arr = str.split(" ");

			for (int j = 0; j <= matrix.length - 1; j++) {

				matrix[i][j] = Integer.parseInt(str_arr[j]);
			}
		}

		// 성실한 개미 이동 경로 생성
		int x = 1; // 시작 좌표 설정
		int y = 1;

		while (true) {

			if (matrix[x][y] == 2) { // 현재 위치에 먹이가 있는 경우
				matrix[x][y] = 9;
				break;
			} else {
				matrix[x][y] = 9; // 방문 표시
			}
			if (y < 9 && x < 9 && matrix[x][y + 1] != 1) { // 미로 상자 안에서 벽에 부딪히지 않고, 오른쪽에 벽이 없는 경우, 오른쪽으로 이동
				y++;
			} else if (y < 9 && x < 9 && matrix[x][y + 1] == 1 && matrix[x + 1][y] != 1) { // 오른쪽에 벽이 있고, 아래에 벽이 없는 경우, 아래로 이동
				x++;																		
			} else {
				break;
			}

		}

		// 미로 상자 출력
		for (
				int i = 0; i <= matrix.length - 1; i++) {
			for (int j = 0; j <= matrix.length - 1; j++) {
				System.out.printf("%d ", matrix[i][j]);
			}
			System.out.println();
		}

	}

}

3. 리뷰

입력을 받고, 시작 좌표를 설정한 다음(문제에선 (1,1)로 고정), 현재 위치에 먹이가 있는 경우 바로 체크해서 break로 while문을 빠져나오고, 그게 아닌 경우 현재 위치에 9로 방문 체크하고
상자 안에 있는 경우에 한해 문제에 나온 조건을 만족하는 if 문을 작성했다.

자바 공부를 하면서 알고리즘 공부를 하던 중 좋은 사이트를 찾아서 기초 100제를 풀었다.
기본적인 알고리즘은 파이썬 공부하면서 대략 알고있던 터라 정답률이 가장 낮은 문제 위주로 풀었다.
코딩하는 방식이 파이썬보다 더 내 사고방식과 비슷한 것 같다.

profile
어제보다 성장하는 개발자

0개의 댓글