[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 글자씩 출력한다.
조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문 작성;
}
문자열에서 10 글자씩 끊어서 출력해야 하기 때문에
문자열을 추출하는 String 클래스의 함수 substring() 를 사용한다.
=> 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개의 입력방식을 사용해서 결과를 출력한다.
- Scanner 클래스
- 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()
메서드를 사용한다.
[여기서 잠깐!]
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. 성능 비교
입력의 경우 확실히 Scanner 보다는 BufferedReader 가 빠른 것을 볼 수 있다.
관련 페이지
Leave a comment