반응형
# 문제 출제 사이트
https://www.acmicpc.net/problem/11718
# 문제
입력 받은 대로 출력하는 프로그램을 작성하시오.
# 입력
입력이 주어진다.
입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다.
각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다.
또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
# 출력
입력받은 그대로 출력한다.
# 제출한 소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] strArr = new String[100];
StringBuilder sb = new StringBuilder();
for (int i = 0; i < strArr.length; i++) {
String tempStr = br.readLine();
if (tempStr != null && !tempStr.equals("")) {
sb.append(tempStr + "\n");
} else {
break;
}
}
System.out.println(sb);
}
}
- String 배열을 100개 선언하고 거기다 값을 넣고 출력할려고 했었습니다.
=> 문제를 보면 최대 100개만 입력을 한다고 나와있어서 위와 같이 했습니다.
=> 생각해보니 반복문을 최대 100번만 돌면 되게 하면 되지 않을까 싶어서 코드를 아래와 같이 변경했습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++) {
String tempStr = br.readLine();
if (tempStr != null && !tempStr.equals("")) {
sb.append(tempStr + "\n");
} else {
break;
}
}
System.out.println(sb);
}
}
- 위와 같이 변경했는데 보면볼수록 코드가 더러운것 같아서 다른분들이 제출한 코드를 찾아봤습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "";
while ((str = br.readLine()) != null) {
System.out.println(str);
}
}
}
- readLine()으로 읽어온 값이 null이 아닐때까지 String 값을 출력하는 심플한 코드를 찾았습니다.
- 위 코드는 저도 한번 작성해볼까 생각했는데 너무 간단한것 같아서 작성하지 않았던 코드입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while(true){
String str = br.readLine();
if (str == null || str.isEmpty()) {
break;
}
sb.append(str + "\n");
}
br.close();
System.out.println(sb);
}
}
- 개인적으로 위의 코드가 제일 깔끔하고 제가 작성했던 코드와 조금 비슷하다고 생각했습니다.
- for문 대신에 while문을 사용
- readLine()에서 읽어온 값이 null이거나 빈값이면 while문 break(종료)
- StringBuilder를 사용해서 입력된 값을 전부 저장하고 개행문자로 각 라인을 구분
반응형