숫자의 합 구하기 (백준 11720) [배열과 리스트 실전 문제]
Post

숫자의 합 구하기 (백준 11720) [배열과 리스트 실전 문제]

안녕하세요~👋

오늘도 공부하는 무럭무럭 ✨성장몬✨ 입니다.


저는 문제가 주어지면 일단 코드부터 작성했는데…

이렇게 문제 분석부터 구현까지 차례대로 하면

실수나 오류도 많이 줄일 수 있을 거 같아요!

이 강의도 열심히 들어서 코딩테스트 박살내야지 ㅎㅎ


같이 성장하고 싶다면~?



문제 001 숫자의 합 구하기


  • 시간 제한 1초
  • 난이도 브론즈
  • 백준 온라인 저지 11720번

📝 문제

N개의 숫자가 공백 없이 써 있다. 이 숫자를 모두 합해 출력하는 프로그램을 작성하시오.


📥 입력

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

📤 출력

입력으로 주어진 숫자 N개의 합을 출력한다.

백준11720 예제 입출력



💙 01단계 | 문제 분석하기

N의 범위가 1부터 100가지이므로 값을 in형, long형과 같은 숫자형으로 담을 수 없습니다.

먼저 문자열 형태로 입력값을 받은 후 이를 문자 배열로 변환하고, 문자 배열값을 순서대로 읽으면서 숫자형으로 변환하여 더해야 합니다. 예를 들어 입력값을 “1234”와 같이 문자열로 입력받은 후 이를 다시 ‘1’, ‘2’, ‘3’, ‘4’와 같이 문자 배열로 변환하고, 다시 문자 배열을 1, 2, 3, 4,로 변환한 다음 더해 10을 구합니다.

문자열을 숫자형으로 변경하려면 아스키코드를 이해하고 있어야 합니다. 아스키코드에서 같은 의미의 문자와 숫자의 코드 값 차이는 48입니다. 예를 들어 문자 ‘1’은 아스키코드 값이 49이므로 문자 ‘1’을 숫자 1로 변환하려면 ‘1’-48 또는 ‘1’-‘0’과 같이 연산하면 됩니다.


💙 02단계 | 손으로 풀어 보기

  1. 숫자의 개수만큼 입력받은 값을 String형으로 저장합니다.
  2. String형으로 입력받은 값을 char[]형으로 변환합니다.
  3. 인덱스 0부터 끝까지 배열을 탐색하며 각 값을 정수형으로 변환하고 결괏값에 더하여 누적합니다.


💙 03단계 | 슈도코드 작성하기

1
2
3
4
5
6
7
8
9
N값 입력받기
길이 N의 숫자를 입력받아 String형 변수 sNum에 저장하기
sNum을 다시 char []형 변수 cNum에 변환하기 저장하기
int형 변수 sum 선언하기
for(cNum 길이만큼 반복하기)
{
	배열의 각 자릿값을 정수형으로 변환하며 sum에 더하여 누적하기
}
sum 출력하기


💙 04단계 | 코드 구현하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Scanner;

public class P11720_숫자의합 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		// 입력값을 String형 변수 sNum에 저장한 후 char[]형 변수로 변환하기
		String sNum = sc.next();
		char[] cNum = sNum.toCharArray();
		int sum = 0;
		for(int i= 0; i < cNum.length; i++) {
			sum += cNum[i] - '0'; // cNum[i]를 정수형으로 변환하면서 sum에 더하여 누적하기
		}
		System.out.print(sum);
	}
}