11720. 숫자의 합 구하기
https://www.acmicpc.net/problem/11720
11720번: 숫자의 합
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
www.acmicpc.net
저는 처음에 이 문제를 배열로 풀지 않고 기본적으로 알고 있는 지식만으로 풀었습니다.
배열로 푸는 방법도 있지만 사실 배열을 쓰지 않고 푸는 방법이 성능면에서는 더 좋습니다.
배열을 활용하는 방법과 활용하지 않아도 풀 수 있는 방법 두 가지를 이 문제를 통해
숙지해두시면 좋을 거 같아 배열을 활용한 풀이법도 같이 올려드립니다.
* 풀이1 (배열 활용 X) - charAt()을 활용하여 문자열의 문자를 활용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
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();
for (int i = 0; i < N; i++) {
sum += str.charAt(i) - '0';
}
System.out.println(sum);
}
}
|
cs |
* 풀이2 (배열 활용)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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());
String str = br.readLine();
char[] ch = str.toCharArray(); // 문자열의 문자를 요소로 한 배열 생성
int sum = 0;
for (int i = 0; i < N; i++) {
sum += ch[i] - '0'; // ch[i]를 정수형으로 변환하면서 sum에 더하여 누적
}
System.out.println(sum);
}
}
|
cs |
*요약
보통 백준 문제 풀 때 입력과 출력을 고려해서 코딩을 하는 경우가 많습니다. 입력은 Scanner를 주로 이용하실텐데 제한시간이 주어진 문제같은 경우 BufferedReader를 쓰는 것을 추천드립니다. 성능면에서 빠르고 시간도 단축시킬 수 있다는 장점이 있습니다. 그 외에 toCharArray()와 str.charAt() 활용법도 이번 문제를 통해 얻어가시면 좋을 듯 합니다. 문자열이나 숫자 처리하는 문제에서 굉장히 많이 활용되는 개념입니다. 참고로 배열을 사용하지 않는 선에서 문제해결을 해야한다면 str.charAt()을 적극 활용해보시는 게 좋을 듯 합니다.
'Algorithm > 백준' 카테고리의 다른 글
1940. 주몽 (1) | 2022.12.25 |
---|---|
1110. 더하기 사이클 (0) | 2022.12.08 |