[BaekJoon] 11721번 - 열 개씩 끊어 출력하기 (java)

1. 문제

👉 문제 바로가기

- 조건

시간 제한 메모리 제한
1초 256MB


- 문제

알파벳 소문자와 대문자로만 이루어진 길이가 N인 단어가 주어진다.
한 줄에 10글자씩 끊어서 출력하는 프로그램을 작성하시오.

- 입력

첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다.

- 출력

입력으로 주어진 단어를 열 개씩 끊어서 한 줄에 하나씩 출력한다. 단어의 길이가 10의 배수가 아닌 경우에는 마지막 줄에는 10개 미만의 글자만 출력할 수도 있다.

- 예제

  입력      출력  
BaekjoonOnlineJudge BaekjoonOn
lineJudge
OneTwoThreeFourFiveSixSevenEightNineTen OneTwoThre
eFourFiveS
ixSevenEig
htNineTen





2. 풀이

2-0. 알고리즘

for 반복문을 사용해 출력할 문자열이 없을 때까지 반복하며 10 글자씩 출력한다.

while (초기식;조건식;증감식) {
    조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문 작성;
}




문자열에서 10 글자씩 끊어서 출력해야 하기 때문에
문자열을 추출하는 String 클래스의 함수 substring() 를 사용한다.

str.substring(i,j);

=> str 의 인덱스 i 부터 j 전까지 추출


이 문제에서는 인자에 넣어주는 인덱스를 10 단위로 계속 증가시켜야 하기 때문에
for 반복문을 활용해 증감식을 i += 10 처럼 i를 10 만큼 증가시킨다.

추가로 10개 미만의 문자열이 남아있을 경우, 조건을 체크해야 한다.
출력할 문자열의 끝 인덱스가 문자열의 길이보다 길다면, 끝 인덱스에 문자열의 길이를 대입해 문자열의 길이만큼만 출력한다.

for(int i = 0; i < s.length(); i += 10){
            int endIndex = i + 10;
            if (endIndex > s.length()) {
                endIndex = s.length();
            }
            System.out.println(s.substring(i, endIndex));
        }





2개의 입력방식을 사용해서 결과를 출력한다.

  1. Scanner 클래스
  2. BufferedReader 클래스


2-1. Scanner 클래스

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        String s = sc.nextLine();
        
        for(int i = 0; i < s.length(); i += 10){
            int endIndex = i + 10;
            if (endIndex > s.length()) {
                endIndex = s.length();
            }
            System.out.println(s.substring(i, endIndex));
        }
    }
}

위와같이 객체를 생성할 때, Scanner(System.in) 에서 System.in 은 입력한 값을 Byte 단위로 읽는 것을 뜻한다.

int형 데이터를 입력받기 위해 nextInt() 메서드를 사용한다.



[여기서 잠깐!]

Scanner 클래스에 대해 더 자세히 알고싶다면 여기 를 클릭하세요




2-2. BufferedReader 클래스 사용

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

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        String s = br.readLine();
        
        for(int i = 0; i < s.length(); i += 10){
            int endIndex = i + 10;
            if (endIndex > s.length()) {
                endIndex = s.length();
            }
            System.out.println(s.substring(i, endIndex));
        }
    }
}



[여기서 잠깐!]

BufferedWriter 클래스에 대해 더 알아보고 싶으면 여기를 클릭하면 된다.





3. 성능 비교

image

입력의 경우 확실히 Scanner 보다는 BufferedReader 가 빠른 것을 볼 수 있다.





관련 페이지

Categories:

Updated:

Leave a comment