https://www.acmicpc.net/problem/11720
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
|
N = 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에 더해주었다.
'코딩테스트 > 백준' 카테고리의 다른 글
[백준-자바/파이썬] 4153번 직각삼각형 / 2021.09.26 (0) | 2021.09.26 |
---|---|
[백준-자바/파이썬] 3009번 네 번째 점 / 2021.09.22 (0) | 2021.09.22 |
[백준-자바/파이썬] 2908번 상수 / 2021.09.05 (0) | 2021.09.05 |
[백준-자바/파이썬] 1152번 단어의 개수 / 2021.08.30 (1) | 2021.08.30 |
[백준-자바/파이썬] 2675번 문자열 반복 / 2021.08.28 (1) | 2021.08.28 |