백준 11720번 숫자의합 - 자바

728x90

www.acmicpc.net/problem/11720

 

11720번: 숫자의 합

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

www.acmicpc.net


예제처럼 처음에 숫자가 입력되고 그 숫자만큼의 개수로 숫자가 입력됩니다.

 

첫줄에 5가 입력되면 5개의 숫자가 다음줄에 공백없이 입력되는 것 입니다.

 

처음엔 StringToken을 사용하여 문자열로 읽어 사용할 계획이었으나 StringToken은 기본적으로 \t\n\r\t 이 기준으로 나눠지기 때문에

 

문자열로 읽어 한문자씩 가져오는 방법을 사용했습니다.

 

import java.util.*;
class Main {  
  public static void main(String args[]) { 
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int sum = 0;
    sc.nextLine();
    String str =sc.nextLine();
    for(int i=0; i<n; i++){
      sum+=str.charAt(i)-'0';
    }
    System.out.println(sum);
  } 
}

 

자바의 Scanner를 통해 입력을 받았습니다.

 

nextInt로 몇개의 숫자가 들어올지 읽었습니다.

 

총 합의 출력을 위한 변수 : sum

 

스캐너는 \n 도 읽기때문에 nextLine()을 한번 사용하여 개행을 없애줍니다.

 

처음에 5를 입력하고 엔터를 누르면 그 엔터도 읽는다는 것이므로 그 엔터를 없애준 것 입니다.

 

그 다음 숫자들을 문자열로 읽습니다.

 

n만큼 반복하여 문자열에 첫번째자리부터 읽어 sum에 더 합니다.

 

charAt(i)은 i번째 문자를 읽습니다. 만약 12345를 입력하면 1부터 차례대로 1,2,3,4,5 를 읽습니다.

 

문자이기때문에 - '0'으로 숫자로 만들어주어 sum에 더해줍니다.

 

sum을 출력해 총합을 출력합니다.

 

--------------------------------

 

* substring을 이용하는 방법

 

자바에는 문자열을 자르는 substring이 있다.

 

String a = "12345";

 

라고 한다면

 

0 1 2 3 4 <- index

1 2 3 4 5 <-숫자

 

문자열에 0번째 인덱스 부터 차례대로 숫자가 할당 된다.

 

substring는 어디서부터 어디까지 문자를 가져올 것인지 index를 넣으면 된다.

 

예로들면

 

substring(2,4);

 

이러면 2부터 4까지 index를 가져오는 것이나 2를 시작으로해서 4를 포함하지 않는다.

 

그럼 2번,3번 인덱스인 3,4를 가져오는 것이다.

 

이 문제를 해결하기 위해서는 첫번째 인덱스 부터 차례대로 가져오면 되기 때문에

 

반복문을 사용하여 

 

for(int i=0; i<n; i++){

    substring(i,i+1);

}

 

해주면 되겠습니다. 

반응형