[Java] 백준 : 공사장 표지판 #23055

이동엽·2022년 7월 21일
0

코딩테스트

목록 보기
6/9

공사장 표지판 #23055


문제 원본 보러가기

깃헙 코드 보러가기


백준 : 충남대학교 대회

  • 제 5회 생객하는 프로그래밍 대회 A번

문제 설명

  • 신입생 백남이는 넓은 충남대학교를 돌아다니다 보니 건물을 공사하는 곳을 많이 보았다.

  • 공사장은 위험한 요소들이 많아 다칠 수도 있기 때문에 들어가지 못하도록 해야 한다.

  • 안전을 위해 출입제한 표지판을 만들어 주도록 하자.


표지판 예시



입력 조건

  • 첫째 줄에 정수 N이 주어진다.
    • N은 1보다 크거나 같고, 20보다 작거나 같다.

출력 조건

  • N * N 크기의 출입제한 표지판을 출력한다

문제 접근 방식

  • 입력이 1일 경우 * 만을 출력한다.
  • 입력이 1이 아닐 경우
    • 모든 1~N번째 줄은 처음과 마지막에 * 을 출력한다.
    • 따라서, 인덱스 0번과 N-1번은 무조건 * 을 출력하도록 한다.
    • 이후, 인덱스 1번부터 N-2번 사이를 작성한다.
      • 이 내부에서 i 번째 줄일 때, 인덱스 (i - 1)번과 (N - (i + 2))번에서만 * 을 출력
      • 나머지 경우에서는 “ “ 을 출력한다.



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// 백준 - 대학교 대회 - 충남대학교
// 백준 - 23055번 : 공사장 표지판
public class Main {
    private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {
//        System.out.println("표지판의 크기(N * N)에 해당하는 정수를 입력하세요");
        int N = Integer.parseInt(bufferedReader.readLine());

        makeSiteSign(N);
    }

    private static void makeSiteSign(int N) {
        if (N == 1) {
            System.out.println("*");
        } else {

            for (int i = 0; i < N; i++) {     //세로 N줄
                System.out.print("*");  //가로 줄에서 처음 * 출력

                if (i == 0) {
                    for (int j = 0; j < N - 2; j++)
                        System.out.print("*");
                } else if (i == N - 1) {
                    for (int j = 0; j < N - 2; j++)
                        System.out.print("*");
                } else {
                    for (int j = 0; j < N - 2; j++) {
                        /*
                         * i == 1 -> j = 0, 12
                         * i == 2 -> j = 1, 11
                         * i == 3 -> j = 2, 10
                         * */
                        if (j == i - 1 || j == N - (i + 2)) System.out.print("*");
                        else System.out.print(" ");

                    }
                }
                System.out.println("*");  //가로 줄에서 마지막 * 출력
            } //end - for문
        } //end - else문
    } //end - makeSiteSign()
}
profile
백엔드 개발자로 등 따숩고 배 부르게 되는 그 날까지

0개의 댓글