알고리즘 풀이
[백준] 11720번: 숫자의 합 - java 풀이
코디드
2023. 6. 18. 15:53
charAt()을 이용한 풀이
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();
br.close();
int sum=0;
for(int i=0; i<N; i++) {
sum+=str.charAt(i)-'0';
}
System.out.println(sum);
}
}
두번째 줄의 숫자를 int 정수가 아닌 String 문자열로 입력 받고, 입력 받은 문자열의 첫번째 원소 부터 마지막 원소까지의 합을 구해준다.
charAt()은 해당하는 문자의 아스키코드 값을 반환하기 때문에 문자 '0'(숫자 영) 또는 그에 해당하는 10진수인 48을 반드시 빼줘야 한다.
getBytes()를 이용한 풀이
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());
byte[] num = br.readLine().getBytes();
br.close();
int sum=0;
for(int i=0; i<N; i++) {
sum+=num[i]-'0';
}
System.out.println(sum);
}
}
더 간단하게 확장 for문으로 정리
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));
Integer.parseInt(br.readLine());
int sum=0;
for(int value : br.readLine().getBytes()) {
sum+=value-'0';
}
br.close();
System.out.println(sum);
}
}
getBytes()는 String 문자열에 대하여 해당 문자열을 하나의 byte배열로 변환해준다.
Charset에서 사용되는 인코딩 방식인 UTF-16 인코딩으로 변경되는 값을 따른다.
그래서 제대로 값을 구하기 위해서는 반드시 문자 '0' 또는 48 을 빼줘야 한다.
참고 : https://st-lab.tistory.com/61
[백준] 11720번 : 숫자의 합 - JAVA [자바]
https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 문제 매우 간단한 문제다! ※ 주의할 점
st-lab.tistory.com