11721번 열 개씩 끊어 출력하기 - 자바

728x90

https://www.acmicpc.net/problem/11721

 

11721번: 열 개씩 끊어 출력하기

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

www.acmicpc.net


 

전체 코드

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        if(s.length()<=10){
            System.out.println(s);
        }else{
            int n = s.length() / 10;
            int n1 = s.length() % (n*10);
            for(int i=0; i<n; i++){
                System.out.println(s.substring(i*10,i*10+10));
            }
            if(n1 != 0){
                System.out.println(s.substring(n*10,s.length()));
            }

        }


    }
}



 

해설

입력은 Scanner로 받았습니다.

문자열을 입력 받습니다.


문자열이 10개 이하이면 나눌 필요가 없으니

바로 출력해줍니다.


substring을 사용하여 나눴습니다.

반복을 위한 n을 만들어 줍니다.

문자열의 개수가 36이면 36/10해서 n은 3이 됩니다.

3번 반복하게 됩니다.

만약 36인 문자열을 10단어로 끊어서 3번 반복하면 

나머지 6글자에 대해서 출력을 더 해주어야 합니다.

그래서 6이라는 나머지 값을 얻어오기 위한 n1을 구합니다.

36 % (3*10) 이므로 6인 나머지가 구해집니다.

 

여기서 3번 반복 하면서 substring(start, end) 로 출력해줍니다.

start = i*10

end = i*10+10

 

즉 0일 경우 0,10

1일 경우 10, 20

2일 경우 20, 30 

 


위에서 구한 n1(나머지 문자를 출력을 위함) 가 0이 아니면 출력해야 하므로

n*10으로 start를 잡아주고, 나머지를 s 문자열에 길이만큼 end를 잡아줍니다.

 

 

반응형