본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1677 : 종이 자르기

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1677 종이 자르기 (자바, JAVA)입니다.

Intro

Question

문제 설명

입력

가로 길이 n과 세로 길이 m이 공백으로 분리되어 입력된다.(2 <= n, m <= 50)

출력

n*m 크기의 종이를 출력한다.
가로는 '-', 세로는 '|'로 출력하며, 가로와 세로가 겹치는 부분은 '+'로 출력한다.

예시

  • 입력 : 4 3
  • 출력 :
    +--+
    |    |
    +--+

Solution (풀이)

  • 풀이 1 : 메모리 11096, 시간 : 정답
public class Answer1 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        int width = Integer.parseInt(st.nextToken());
        int height= Integer.parseInt(st.nextToken());

        char[][] arr = new char[height][width];
        for (int i=0; i<height; i++) {
            for (int j=0; j<width; j++) {
                if ( (i==0 || i==height-1) && (j==0 || j==width-1) ) {
                    arr[i][j] = '+';     
                } else if (i==0 || i==height-1) { 
                    arr[i][j] = '-';
                } else if (j==0 || j==width-1) {
                    arr[i][j] = '|';
                } else {

                }
            }
        }

        for (char[] i : arr) {
            for (char j : i) {
                sb.append(j);
            }
            sb.append("\n");
        }

        System.out.println(sb);
    }

}
  • 풀이 2 : 메모리 11192, 시간 70
public class Answer2 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        int width = Integer.parseInt(st.nextToken());
        int height= Integer.parseInt(st.nextToken());

        for (int i=0; i<height; i++) {
            for (int j=0; j<width; j++) {
                if ( (i==0 || i==height-1) && (j==0 || j==width-1) ) {
                    sb.append('+');     
                } else if (i==0 || i==height-1) { 
                    sb.append('-');
                } else if (j==0 || j==width-1) {
                    sb.append('|');
                } else {
                    sb.append(' ');
                }
            }
            sb.append("\n");
        }

        System.out.println(sb);
    }

}

Ranking(순위)

반응형