본문 바로가기

코딩테스트/백준

[백준-자바/파이썬] 11720번 숫자의 합 / 2021.08.27

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

 

11720번: 숫자의 합

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

www.acmicpc.net

 

 

1. Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 hap = 0;
        
        for(int i = 0; i< N; i++) {
            hap += str.charAt(i)-'0';
        }
        
        
        System.out.println(hap);
    }
}
cs


풀이 : 간단한 문제라 풀이라 할 것도 없지만 그래도 해보면...

맨 처음에 int형 변수 N을 입력받는다. ( 첫째 줄의 숫자의 개수 )
그리고 두 번째 줄에 공백 없이 숫자를 입력받아야 하므로 int형이 아닌 String 문자열 형태로 N개를 입력한다.
이제, 이 문자열 형태를 한문자씩 떼어내, int형으로 바꾸어준 후 hap변수에 더해준다.

str.charAt(i) - '0' => 여기서 charAt()는 String형 문자열을 하나만 떼어내 char형으로 바꾸어주는 역할을 한다.
예를 들어 charAt(0)이면 문자열의 첫 번째 문자를 char형으로 바꾸라는 뜻이다.

- '0'을 해주는 이유? charAt()를 이용하여 String을 char형으로 바꾸어주었지만 연산을 수행하려면
char형을 int형으로 바꾸어주어야 한다. 이 과정에서 예를 들어 문자 1은 아스키코드값으로 49이다.
그러나 우리는 int형 1이 필요하기 때문에 -48 or -'0'을 해주어야 한다. ('0'은 48)

2. Python

 

1
2
3
4
5
6
7
8
= int(input())
numbers = input()
number_list = list(numbers)
hap = 0
for i in number_list:
    hap += int(i)
 
print(hap)
cs

 


풀이 :
Java풀이와 다른 점은 한 문자씩 떼어내기 위해 list형으로 만들어주었다는 점이다.
숫자를 문자열로 입력받은 후 문자열 리스트(number_list)로 변환
그리고 for문에서 문자하나씩 더할 수 없기 때문에 int(i)를 통해 int형으로 변환한 다음 hap에 더해주었다.