[백준] 입출력 - 11721번, 열 개씩 끊어 출력. charAt();
* 공부 목표
입출력 - 2557, 1000, 2558, 10950, 10951, 10952, 10953, 11021, 11022, 11718, 11719, 11720, 11721, 2741, 2742, 2739, 1924, 8393, 10818, 2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992
- 11721번
문) 알파벳 소문자와 대문자로만 이루어진 길이가 N인 단어가 주어진다.
한 줄에 10글자씩 끊어서 출력하는 프로그램을 작성하시오.
출) 입력으로 주어진 단어를 열 개씩 끊어서 한 줄에 하나씩 출력한다. 단어의 길이가 10의 배수가 아닌 경우에는 마지막 줄에는 10개 미만의 글자만 출력할 수도 있다.
** 혼자 풀이
1. 10글자씩 끊어서 출력, substring(); 메소드 활용.
2. if문, (입력 값.length() /10 < 2) 인 경우와 그 외를 나눔.
3. (전자의 경우) String 변수 b를 선언해 앞의 10글자 + 나머지 글자 출력.
4. (후자의 경우) 반복문을 통해 index값을 10씩 증가시켜 글자를 쪼개는 방향으로 함.
import java.util.*;
public class Main {
public static void main(String[] args) {
String a, b;
int index = 0;
Scanner sc = new Scanner(System.in);
a = sc.next();
if (a.length()/10 < 2) {
b= a.substring(0, 10) + "\n" + a.substring(10, a.length());
System.out.println(b);
} else {
for(int i=0; i < a.length()/10; i++) {
b= a.substring(index, index+10);
index += 10;
System.out.println(b);
}}
sc.close();
}
}
▶ 실행 결과 : 틀렸음.
(원인 분석) 결과 자체는 동일하게 나옴. 그러나 백준에서 원하는 풀이가 아님. 코드도 과하게 길다.
** 모범답안
1. charAt(); 메소드를 활용, 한 글자씩 char 출력.
2. 만약 0부터 시작하는 i 를 10으로 나누었을 때, 9이면 10글자가 출력되었다는 의미임. 다음 줄로 넘김.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
sc.close();
for(int i=0; i < a.length(); i++) {
System.out.print(a.charAt(i));
if(i%10 == 9) {
System.out.println();
}
}
}
}
** 혼자 생각하는 시간 1시간 소요. ▶ 10분 넘어가면 모르는 개념이라 생각하고 넘겨야겠음.
** charAt(); 메소드에 대한 개념이 잘못 잡혀서 쓸 생각 전혀 못함.
하지만 그게 아니었더라도 substring()을 활용한 코드도 나올 수 있었을텐데....
▶ 여기까지 입출력 내용을 한번 복습하고, substring을 활용한 다른 답안을 작성해보자.