규도자 개발 블로그

[백준/11718/자바(Java)] 그대로 출력하기 본문

알고리즘/풀이

[백준/11718/자바(Java)] 그대로 출력하기

규도자 (gyudoza) 2018. 9. 18. 23:59

문제

입력 받은 대로 출력하는 프로그램을 작성하시오.

입력

입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.

출력

입력받은 그대로 출력한다.

입출력 예

입력출력
Hello
Baekjoon
Online Judge
Hello
Baekjoon
Online Judge

풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.regex.Pattern;
 
public class Main {
  public static void main(String[] args) throws Exception {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    String line;
    ArrayList<String> strList = new ArrayList<String>();
    int count = 0;
    while((line=in.readLine())!=null){
      if(line.isEmpty()||count>100||line.startsWith(" ")||line.endsWith(" ")
         ||line.length()>100 || !Pattern.matches("^([a-zA-Z0-9 ]+)", line)) {
        break;
      }
      else
      {
        strList.add(line);
      }     
    }
     
    for(String str : strList) {
      System.out.println(str);
    }   
  }
}

설명

간단한 설명만큼 간단한 문제는 아니었다. 사실 입력에 대한 조건 필터링은 필요 없더라... 그냥 이런 입력이 들어온다는 안내이고 해당 입력값을 벗어나는 값에 대한 예외처리는 하지 않아도 틀렸다는 평가는 받지 않았다. 하지만 뭐 만들었으니 쓴다만...
 String클래스를 받는 리스트를 생성하여 입력받은 StringList를 차례대로 출력하면 되는 문제이다. 맨 처음에는 String변수 하나에 모든 요소를 받아서 출력하려고 했는데 그렇게 하면 엔터값에 대한 처리가 불가능하더라. 해서 이렇게 처리하였다. 그리고 문자열을 입력받을 땐 Scanner클래스가 아닌 BufferedReader클래스를 이용해야 한다.

Comments