콩부방

1512 : 숫자 등고선 본문

알고리즘 공부/CodeUp

1512 : 숫자 등고선

콩이아부지이 2021. 9. 20. 18:04
728x90

어느날 등산을하다가 길을 찾기 위해 지도를 보다가 땅의 높낮이를 표시되어 있는 등고선을 보면서 문득 2차원 배열로 숫자등고선을 만드는 문제가 생각났다.

여러분들은 배열크기 N과 시작위치 X , Y를 입력받아 숫자등고선을 만드시오.

예를 들어 배열크기가 5이고 시작위치가 3 , 4 라면 3,4로 시작하는 다음과같은 숫자등고선을 만들수 있다.

6 5 4 3 4

5 4 3 2 3

4 3 2 1 2

5 4 3 2 3

6 5 4 3 4

입력

배열의 크기 N의 범위는 1<=N<=100 이며 좌표값 X,Y는 배열크기보다 작다.

출력

숫자등고선을 출력한다. 숫자와 숫자 사이는 공백을 출력한다.

입력 예시   예시 복사

5 3 4

출력 예시

6 5 4 3 4

5 4 3 2 3

4 3 2 1 2

5 4 3 2 3

6 5 4 3 4

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int x = sc.nextInt();
		int y = sc.nextInt();
		int[][] b = new int[101][101];
		
		b[x][y]= 1;
		int v = b[x][y];
		
		for(int i = x-1; i >= 1; i--) {//i값 2 1 두번 실행
			b[i][y] = ++v; //위로
		}
	    v = b[x][y];
	    for(int i = x+1; i <= n; i++ ){ //i값 4 5 두번실행
	        b[i][y] = ++v; //아래로
	    }
	    
	    for(int i = 1; i <= n; i++){ // i값 1 2 3 4 5 다섯번 실행
	        v = b[i][y]; //b[i][y] 기준 왼쪽
	        for(int j = y-1; j >= 1; j-- ){ //j값 3 2 1 세번 실행
	            b[i][j] = ++v;
	        }
	        v = b[i][y];
	        for(int j = y+1; j <= n; j++ ){//오른쪽
	            b[i][j] = ++v;
	        }
	    }
		//출력
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) {
				System.out.print(b[i][j]+" ");
			}
			System.out.println();
		}
	}
}

 

출처 : https://codeup.kr/problem.php?id=1512 

 

숫자 등고선

어느날 등산을하다가 길을 찾기 위해 지도를 보다가 땅의 높낮이를 표시되어 있는 등고선을 보면서 문득 2차원 배열로 숫자등고선을 만드는 문제가 생각났다. 여러분들은 배열크기 N과 시작위

codeup.kr

 

728x90
Comments