[백준] 숫자의 합(11720)

Wonho Kim·2025년 1월 15일

Baekjoon

목록 보기
2/42

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

Python

이 문제는 숫자를 공백없이 입력받을 경우 각 자릿수의 합을 더하여 출력하는 문제이다.

문제풀이 방법은 다음과 같다.

  1. 숫자를 리스트 형태로 입력받는다.
  2. for문을 이용해서 수를 하나씩 들고와서 더한다.
N = int(input())
num = list(input())

sum = 0

for i in num:
    sum = sum + int(i)

print(sum)

아니면 아래와 같이 구분자 함수인 join()을 이용하여 해결할수도 있다.

N = int(input())
num = input()

num = ",".join(num)

sum = 0
for i in num:
    if i == ",":
        continue
    else:
        sum += int(i)

print(sum)

구분자.join() 함수는 각 요소 사이사이에 특정 문자열 구분자를 넣는 기능을 가지고 있다.

확실히 파이썬은 다른 언어에 비해 문자열에 대해 매우 강력한 기능을 가지고 있는 거 같다...
(지금 문제가 어려운 건 아니지만 다른 언어면 저렇게 쉽게 문제가 풀리지도 않는다)

Java

자바의 경우 N의 범위가 1 ~ 100 사이 이므로 int, long 과 같은 숫자 자료형으로 담을 수 없다.

따라서 문자열 형태인 String으로 받은 후 이를 char 배열로 변환하고, 순서대로 읽으면서 숫자형으로 변환하여 더해야 한다.

여기서 한가지 알아야 할 개념이 ASCII(아스키 코드)이다.

String 형을 char 형으로 변환하게 되면 자동으로 ASCII 형태로 변환된다.

ASCII 코드에서 '0'은 숫자 48과 대응되고, '1'은 숫자 49, '2'는 숫자 50... 순서로 대응된다.

따라서 아래와 같이 더할 때 '0'을 빼주는 로직이 추가되어야 한다.

sum += cNum[i] - '0';

전체 풀이코드는 다음과 같다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        String sNum = sc.next();
        char[] cNum = sNum.toCharArray();

        int sum = 0;
        for (int i = 0; i < cNum.length; i++) {
            sum += cNum[i] - '0';
        }
        System.out.println(sum);
    }
}
profile
새싹 백엔드 개발자

0개의 댓글