뱁새유니버스

[알고리즘3] 상하좌우 찾기 문제 풀기

by 뱁새유니버스

IT

2차원 배열이 주어졌을 때 특정 행렬 값을 제시하면 상하좌우 값을 구하는 알고리즘을 만들었습니다.

package algorithm;

import java.util.Scanner;

public class Main {

	static Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {

		int arr[][] = {
				{ 1, 2, 3, 4 },
				{ 5, 5, 7, 6 },
				{ 1, 2, 8, 9 }
		};
		
		System.out.print("행 좌표를 입력하세요: ");
		int row = sc.nextInt();
		System.out.print("열 좌표를 입력하세요: ");
		int col = sc.nextInt();

		// 상하좌우 좌표의 변화량
		int[] dr = { -1, 1, 0, 0 };
		int[] dc = { 0, 0, -1, 1 };

		// 상하좌우 값들을 출력
		for (int i = 0; i < 4; i++) {
			int newRow = row + dr[i];
			int newCol = col + dc[i];
			if (newRow < 0 || newCol < 0 || newRow >= 3 || newCol >= 4)
				continue;

			//인덱스가 배열의 범위 내에 있는지 확인
			if (newRow >= 0 && newRow < arr.length && newCol >= 0 && newCol < arr[0].length) {
				System.out.println("Direction " + i + ": " + arr[newRow][newCol]);
			} else {
				System.out.println("오류!!");
			}
		}
	}
}

상하좌우의 변화량을 dr과 dc 라는 배열을 통해 정하니 그것을 기반으로 상하좌우 값들을 출력할 수 있었습니다.

단순 사고로는 생각하기 어려운 것 같아요. 프로그래밍적 사고가 필요하다고 느꼈습니다.

행열 좌표 값을 입력해보면 아래와 같이 상하좌우 값이 순서대로 나오는 것을 확인할 수 있었습니다.

질문이 있으시면 언제든지 댓글남겨주세요~! 감사합니다.

반응형

블로그의 정보

가슴이 웅장해지는 모든것

뱁새유니버스

활동하기