https://www.acmicpc.net/problem/11721
- 문제
- 문제 풀이
백준 11721번 열 개씩 끊어 출력하기는 브론즈 2 난이도의 문자열 문제이다. 이 문제에서는 입력으로 첫 줄에 문자열이 주어지고 이 문자열을 열 개씩 끊어서 출력하기만 하면 된다.
이 문제는 자바 String의 substring() 함수를 써서 풀도록 하겠다. 그전에 substring 함수에 대해 간략하게 알아보겠다.
String substring(int index)
Substring 함수는 두 가지가 있는데 첫 번째는 바로 인자 값을 하나만 받는 함수이다. 이 함수는 인자 값으로 받은 index를 포함한 이후의 모든 문자열을 반환시키는 함수이다. 예를 한번 보겠다.
String s = "0123456789";
s.substring(5);
//56789
s.substring(3);
//3456789
String substring(int beginIndex, int endIndex)
두 번째 substring 함수는 바로 인자 값으로 beginIndex와 endIndex 2개를 받는 함수이다. 첫 번째 인자 값으로 받는 beginIndex는 문자열의 시작 인덱스이다. 그리고 두 번째 인자 값으로 받는 endIndex는 문자열의 끝 부분을 지정하는데 여기서 주의해야 할 점이 endIndex 전 인덱스까지만 받는다는 것이다. 예를 한번 보겠다.
String s = "0123456789";
s.substring(0,5);
//01234
s.substring(4,9);
//45678
String str = "Hello World";
s.substring(5);
// World
s.substring(5,8);
// Wo
이 문제에서는 길이가 100을 넘지 않는 문자열 1개가 주어진다. 따라서 문자열의 길이가 10을 넘으면 substring 함수를 여러 번 써야 할 수도 있다.
그래서 n을 다음과 같이 구한다.
int n = s.length() / 10;
그리고 n번만큼 문자열을 10씩 잘라서 출력한다.
for (int i = 0; i < n; i++) {
System.out.println(s.subtring(index, index+10));
}
이렇게 하고 나면 문자열의 길이가 10으로 딱 맞아떨어지지 않으면 남을 것이다. 그래서 그만큼도 substring 함수를 이용해서 출력해준다.
int n = s.length() % 10;
System.out.println(s.substring(s.length()-n));
- 코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int n = s.length() / 10;
int index = 0;
for (int i = 0; i < n; i++) {
System.out.println(s.substring(index, index+10));
index += 10;
}
n = s.length() % 10;
System.out.println(s.substring(s.length()-n));
}
}
- 후기
Substring 함수를 연습해볼 수 있는 문제였다.
'백준' 카테고리의 다른 글
[백준] 1924번 : 2007년 – JAVA [자바] (0) | 2022.04.14 |
---|---|
[백준] 18108번 : 1998년생인 내가 태국에서는 2541년생?! – JAVA [자바] (0) | 2022.04.14 |
[백준] 1535번 : 안녕 – JAVA [자바] (0) | 2022.04.13 |
[백준] 2525번 : 오븐 시계 – JAVA [자바] (4) | 2022.04.13 |
[백준] 10817번 : 세 수 – JAVA [자바] (0) | 2022.04.12 |
댓글