백준 11720번 자바
https://www.acmicpc.net/problem/11720
문제 내용은 아래 더보기를 누르면 나온다.
알고리즘
N개의 숫자가 공백없이 쓰여진다.
이 숫자들을 구분하여 전부 합한 값을 출력한다.
첫째 줄에 숫자의 개수 N ( 1 <= N <= 100 ) 이 주어진다.
둘째 줄에 숫자 N개가 공백없이 주어진다.
N개의 합을 출력한다.
1. 숫자의 개수 N을 입력받는다.
2. N개의 개수만큼 숫자가 들어있는 한 줄을 입력받는다.
3. 한줄에서 하나씩 구분한다.
4. 구분하여 합친다.
5. 출력한다.
풀이1
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();
int sum = 0;
for (int i = 0; i < N; i++) {
sum += str.charAt(i) - 48;
}
System.out.println(sum);
}
}
숫자의 개수 N을 입력받아 N만큼 반복한다.
반복할때 둘째 줄을 입력받은 str에서 charAt() 메서드로 한 문자씩 char타입으로 가져온다.
가지고 온 값은 보통 "아스키 코드 값"이라고 하는데 정확히는 IDE에서 설정해 놓은 파일 인코딩 형식의 10진수 값이다.
이런 인코딩 형식들은 1 ~ 127번 문자까지 똑같기 때문에 보통 "아스키코드" 또는 "유니코드"라고 불린다.
자, 이런 값들을 우리가 원하는 정수로 바꾸기 위해서는 - 48을 해주거나 - '0'을 해주면 된다.
그렇게 나온 값을 전부 더하면 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 N = Integer.parseInt(br.readLine());
char[] numbers = br.readLine().toCharArray();
int sum = 0;
for (int i = 0; i < N; i++) {
sum += numbers[i] - 48;
}
System.out.println(sum);
}
}
풀이1과 다른점은 둘째 줄을 toCharArray() 메서드로 char[]로 받아서 그것들을 꺼내서 쓴다는 것이다.
toCharArray()를 쓰면 String 문자열을 char문자배열로 만들어서 반환해준다.
'코딩테스트 > Java - 백준' 카테고리의 다른 글
[백준] 2675번 - Java(자바) (0) | 2022.02.14 |
---|---|
[백준] 10809번 - Java(자바) (0) | 2022.02.12 |
[백준] 11654번 - Java(자바) (0) | 2022.02.07 |
[백준] 1065번 - Java(자바) (0) | 2022.02.05 |
[백준] 4673번 - Java(자바) (0) | 2022.02.04 |