Basic
1-2: offset
SWC123
2018. 10. 24. 19:26
offset (offset.cpp)
문제
5x5 2차원 배열이 주어질 때 어떤 원소가 상하좌우에 있는 원소보다 작을 때 해당 위치에 * 을 표시하는 프로그램을 작성하시오. 경계선에 있는 수는 상하좌우 중 존재하는 원소만을 비교한다.
입력
5x5 행렬의 정보가 25 개의 수로 주어진다. 각 수는 0 에서 9 사이 수이다.
출력
*를 포함한 행렬을 출력예의 형식으로 출력한다.
예제 입력
3 4 1 4 9
2 9 4 5 8
9 0 8 2 1
7 0 2 8 4
2 7 2 1 4
예제 출력
3 4 * 4 9
* 9 4 5 8
9 0 8 2 *
7 0 2 8 4
* 7 2 * 4
import java.util.Scanner;
public class Offset {
/**
* 5x5 2차원 배열이 주어질 때 어떤 원소가 상하좌우에 있는 원소보다 작을 때 해당 위치에 * 을 표시하는 프로그램을 작성하시오. 경계선에 있는 수는 상하좌우 중 존재하는 원소만을 비교한다.
* 5x5 행렬의 정보가 25 개의 수로 주어진다. 각 수는 0 에서 9 사이 수이다.
*
* *를 포함한 행렬을 출력예의 형식으로 출력한다.
*
* 3 4 1 4 9
* 2 9 4 5 8
* 9 0 8 2 1
* 7 0 2 8 4
* 2 7 2 1 4
*
* 3 4 * 4 9
* * 9 4 5 8
* 9 0 8 2 *
* 7 0 2 8 4
* * 7 2 * 4
* @param args
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int arr[][] = new int[5][5];
String result[][] = new String[5][5];
//read in arr
for (int i=0; i< 5; i++){
for (int j=0; j<5; j++){
arr[i][j] = sc.nextInt();
}
}
//transform into result
for (int i=0; i< 5; i++){
for (int j=0; j<5; j++){
if (isLessThanNeighbors(arr,i,j)){
result[i][j] = "*";
} else {
result[i][j] = String.valueOf(arr[i][j]);
}
}
}
//print result
for (int i=0; i< 5; i++){
for (int j=0; j<5; j++){
System.out.print(result[i][j] +" ");
}
System.out.println();
}
}
private static boolean isLessThanNeighbors(int[][] arr, int i, int j) {
int row = i;
int col= j;
//top
if (row > 0){
if (arr[row][col] >= arr[row-1][col]) {
return false;
}
}
//bot
if (row < arr.length-1){
if (arr[row][col] >= arr[row+1][col]) {
return false;
}
}
//right
if (col < arr[0].length-1){
if (arr[row][col] >= arr[row][col+1]) {
return false;
}
}
//left
if (col >0){
if (arr[row][col] >= arr[row][col-1]) {
return false;
}
}
return true;
}
}