문제


문제 풀이 조건

이 문제에선 5 X 5 배열의 각 원소의 상하좌우에 있는 값들과 비교후 작으면 * 을 출력한다. 첫번째 줄 마지막 줄 오른쪽 왼쪽 줄 같은 경우는 상하 좌우를 다 비교하지 못한다. 그래서 생각할게 많아지고 조건이 많아지면서 코드가 굉장히 길어지고 헷갈릴 수 있다. 그래서 5 X 5 배열을 7 X 7로 만들어 주는 것이다. 모든 원소를 상하좌우 비교할수 있게 하는 것이다. 이러면 생각 해야하는 조건이 하나 밖에 없어진다.

문제 풀이

  • 7 X 7 배열을 만듬.
  • 이중 for문으로 1부터 5까지만 돌면서 arr의 0번째와 6번째 배열을 비워두고 나머지 25칸은 입력 받는다.
  • 배열에 상하좌우 끝배열을들 100으로 채워준다.이러면 비교하였을때 항상 큰값을 유지할 수 있다.
  • 그리고 다시 이중 for문을 돌면서 각 상하좌우 원소들과 비교후 조건에 맞으면 * 을 출력 아니면 그냥 원소 출력.

풀이 코드

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
       // Please Enter Your Code Here
       Scanner s = new Scanner(System.in);
       int num;
       int[][] arr = new int[7][7];
       
       for (int i=1;i<6;i++){
         for (int j=1;j<6;j++){
           num = s.nextInt();
           arr[i][j] = num;
         }
       }
       for (int i=0;i<=6;i++){
         arr[i][0] = 100;
       }
       for (int i=0;i<6;i++){
         arr[0][i] = 100;
       }
       for (int i=0;i<6;i++){
         arr[6][i] = 100;
       }
       for (int i=0;i<6;i++){
         arr[i][6] = 100;
       }
       
       for (int i=1;i<6;i++){
         for (int j=1;j<6;j++){
           if (arr[i][j+1] > arr[i][j] && arr[i][j-1] > arr[i][j] && arr[i+1][j] > arr[i][j] && arr[i-1][j] > arr[i][j]){
             System.out.print("*" + " ");
           }
           else {
             System.out.print(arr[i][j] + " ");
           }
         }
         System.out.println();
       }
      
    
    }
}
profile
난 이 재 선

0개의 댓글