1. 문제 설명
[문제 링크](https://www.acmicpc.net/problem/11720)
문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
출력
입력으로 주어진 숫자 N개의 합을 출력한다.
예제 입력 1 복사
1
1
예제 출력 1 복사
1
2. 접근 방식
- 숫자는 모두 한 자릿수 이다. 길이가 10인 배열을 만들어서 index -> 숫자, value -> 숫자의 개수를 저장한다.
- String 문자열 한 줄로 들어온 숫자들을 모두 체크한 이후에, 길이 10의 배열을 순회하면서 index* value의 총합을 구한다.
3. 코드 분석
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 line = br.readLine();
int sum = 0;
for (int i = 0; i < line.length(); i++) {
sum += (line.charAt(i) - '0');
}
System.out.println(sum);
}
}
4. 성장하기
`char -> int 변환법`
char a = '3'; 이라고 하자.
ⓐ int b = Character.getNumericValue(a) 해당 함수는 문자가 뜻하는 의미 그대로의 숫자로 변경해준다. 3 -> 3 ⓑ int b = a -'0' 문자는 아스키 코드 값으로 이루어져 있다. 만약 (int) a 로 강제 형변환 하면 a = 51의 결과가 나온다. 왜냐하면 아스키 코드에서 3의 값이 51이기 때문이다. 따라서 3이라는 의미를 유지하면서, int 형으로 바꾸려면 51 - 48을 직접 해서 3을 구하면 된다. '0'의 아스키 코드 값이 48임으로 이를 이용하여 진짜 숫자와 아스키코드의 격차인 48을 제거해준다.
5. 다시 풀기
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 line = br.readLine();
int sum = 0;
for (int i = 0; i < line.length(); i++) {
sum += (line.charAt(i) - '0');
}
System.out.println(sum);
}
}
배열 안 쓰고 바로 값을 더해서 구했다.
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[백준] 11659 구간 합 구하기 4 쉬운 풀이 여러가지 풀이 java (0) | 2024.06.22 |
---|---|
[백준] 구간 합 구하기 5 쉬운 풀이, 여러가지 풀이 java (0) | 2024.06.22 |
[코드 트리] 진법 변환 3 java (0) | 2024.06.19 |
[프로그래머스] 42888. 오픈채팅방 JAVA 풀이 설명 (0) | 2024.06.19 |
[프로그래머스] 1845. 폰켓몬 JAVA 해체 분석 (0) | 2024.06.19 |