문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
출력
입력으로 주어진 숫자 N개의 합을 출력한다.
| 예제 입력 | 예제 출력 |
| 1 1 |
1 |
| 5 54321 |
15 |
| 25 7000000000000000000000000 |
7 |
| 11 10987654321 |
46 |
⭕ 풀이1
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int tc = Integer.parseInt(br.readLine());
String[] numArr = br.readLine().split("");
int sum = 0;
for(int i=0;i<tc;i++){
sum += Integer.parseInt(numArr[i]);
}
System.out.print(sum);
}
}
⭕ 풀이2
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 tc = Integer.parseInt(br.readLine());
char[] numArr = br.readLine().toCharArray();
br.close();
int sum = 0;
for(int i = 0; i < tc; i++) {
sum += numArr[i]-48;
}
System.out.print(sum);
}
}
✅ 우선 모든자리를 더해야하는 숫자의 개수를 알려준다.
이를 tc로 받아서 반복문의 조건으로 사용할것이다.
다음은 두번째줄에 주어지는 숫자를 모두 더하는것인데
StringTokenizer 로는 공백없이 붙어있는 문자열은 분리 시킬 수 없다.
1번풀이는
split("")을 사용해 문자열 배열로 받은 뒤 배열의 각 인덱스를
반복문안에서 integer타입으로 형변환 시킨 뒤 sum에 누적시키는 형태이고
2번풀이는
br.readLine()으로 두번째 줄을 받을때 문자열을 char타입 배열로 반환시키는 toCharArray를 사용해
char타입 배열 numArr를 만들었다.
이후 반복문에서는 char타입에서 48을 뺀값을 sum에 누적시키는 형태이다.
✅ char - '0' 혹은 char - 48 ; char타입을 int형으로 바꾸기
우선 아스키코드에서 char타입 '0'은 숫자 48과 같다.
즉 - '0' 을하건 - 48 같은 결과가 나올것이라는 소리이다.
public class Main {
public static void main(String[] args) {
String str = "12345";
char[] arr = str.toCharArray();
System.out.println(arr[2]); // 3 char
System.out.println(arr[2]- 0); // 51 int
System.out.println(arr[2]-'0'); // 3 int
System.out.println(arr[2]-'0'+5);// 8 int
}
}
❗ 예제를 만들어봤는데 살펴보도록하자.
우선 아무런 처리를 하지 않은 arr[2]는 char타입 '3'이다.
여기서 숫자0을 뺀다면 char '3'이 가리키고있는 정수 51이 나오게되고
char타입 '0' 을 뺀다면 '3'이 가리키고있던 51에서 '0'이 가리키는 48을 뺀 뒤 정수3을 출력시키게된다.
-출처
https://www.acmicpc.net/problem/11720
'Algorithm > Baekjoon(Java)' 카테고리의 다른 글
| [백준/JAVA] 2675 : 문자열 반복 (0) | 2022.07.24 |
|---|---|
| [백준/JAVA] 10809 : 알파벳 찾기 (데이터직접입력 최소화) (0) | 2022.07.23 |
| [백준/JAVA] 11654 : 아스키 코드 (0) | 2022.07.22 |
| [백준/JAVA] 1065 : 한수 (0) | 2022.07.21 |
| [백준/JAVA] 4673 : 셀프 넘버 (0) | 2022.07.20 |