문제 풀이

[백준] 11720번: 숫자의 합 - JAVA (자바)

auyeol 2023. 6. 25. 21:52
728x90

 

문제

 

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

 

11720번: 숫자의 합

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

www.acmicpc.net

 

공백없이 입력한 n개의 숫자의 합을 구하는 문제이다.

 

입력                                    출력
5					15
54321
입력                                    출력
11					46
10987654321

 

 

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

 

풀이

Scanner는 CharAt을 통해, BufferedReader는 String 배열을 통해 문제를 해결하였다.

 

(1) Scanner 사용

 

정수 n과 문자열 str을 Scanner를 통해 입력받은 뒤, for문을 이용하여 문자열 변수 str를 charAt을 이용하여 char 변수로 바꾼 다음 계산해주었다. 

 

int형 변수인 sum에 char변수가 저장되기 때문에 값은 해당하는 숫자의 아스키 코드로 입력이 된다.

 

즉, 0은 아스키 코드에서 48번째이기 때문에 0은 48로 저장되게 된다.

 

이를 해결하기 위해 -'0' 을 하였다. -48을 하여도 똑같은 결과를 얻을 수 있다.

 

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		String str = sc.next();
		int sum = 0;
		
		sc.close();
		
		for(int i=0;i<n;i++) {
			sum += str.charAt(i) - '0'; // 0이 아스키 코드의 48번째이기 때문에
		}
		
		System.out.println(sum);
	}

}

 

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

 

 

(2) BufferdReader 사용 

 

 

String 배열을 선언한 다음, split("")을 이용하여 배열 한 칸에 한글자씩 저장될 수 있도록 하였다.

 

for문을 선언하여 String 배열의 값을 int형으로 변환하여 sum 값을 계산하였다.

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		int sum = 0;
		String[] str = br.readLine().split("");
		br.close();
		
		for(int i=0;i<n;i++) {
			sum += Integer.parseInt(str[i]);
		}
		
		
		System.out.println(sum);
		
		
	}

}

Scanner

BufferedReader

728x90