예제처럼 처음에 숫자가 입력되고 그 숫자만큼의 개수로 숫자가 입력됩니다.
첫줄에 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);
}
해주면 되겠습니다.
'알고리즘 with JAVA' 카테고리의 다른 글
백준 2675번 문자열 반복 - 자바 (0) | 2021.04.08 |
---|---|
백준 10809번 알파벳 찾기 - 자바 (0) | 2021.04.07 |
백준 11654번 아스키코드 - 자바 (0) | 2021.04.04 |
백준 1065번 한수 - 자바 (0) | 2021.04.04 |
백준 4673번 셀프넘버 - 실버5 난이도, 함수 (0) | 2021.04.01 |