Algorithm/CodeUp
[CodeUp_Java] Q1677 : 종이 자르기
Plitche
2023. 1. 30. 09:22
반응형
안녕하세요! 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(순위)
반응형