[★1][백준11720번]숫자의 합 (JAVA)
카테고리: BKJN
태그: Algorithm Java Coding Test
[★1][백준11720번]숫자의 합 (JAVA)
11720번 문제 ☞ https://www.acmicpc.net/problem/11720
난이도 ☞ [★1]
숫자의 합
- 문제
- N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
- 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
-
입력으로 주어진 숫자 N개의 합을 출력한다.
예제입력 예제출력 1
11 예제입력 예제출력 5
5432115 예제입력 예제출력 25
70000000000000000000000007 예제입력 예제출력 11
1098765432146
내가 푼 풀이
이번 문제는 매우 쉬운데 그래서 틀렸다. 매우 단순하게 코드를 작성해보았는데 그 코드는 아래와 같다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int N = s.nextInt();
int sum = 0;
for (int i = 0; i < N; i++) {
sum += s.nextInt();
}
System.out.println(sum);
}
}
그래서 틀렸다. 이렇게 푸는 문제가 아니었다. 너무 쉽게 생각하고 접근했던 거 같다. 하지만 그래도 어렵지 않았다. 코드는 아래와 같다.
[ 풀이 1 ]
메모리 :
14100KB
시간 :120ms
Scanner, charAt()
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int N = s.nextInt();
String str = s.next();
s.close();
int sum = 0;
for (int i = 0; i < N; i++) {
sum += str.charAt(i) - 48;
}
System.out.println(sum);
}
}
chatAt()
을 사용하여, 우리가 아는 숫자로 표현을 하려면 chatAt() - 48;
으로 작성을 해주어야 우리가 아는 숫자로 표현이 된다. 뿐만 아니라 chatAt() - '0';
으로 작성을 해주면 된다. 그리고 BufferedReader
롤 체택하여 작성하려면 charAt()
이 아닌 getBytes()
를 사용하여야 한다. 우선 코드를 보기 전 getBytes()
에 대해 설명을 붙인다.
getBytes()
- 문자열(String)에 대하여 해당 문자열을 하나의 byte 배열로 변환해주는 메서드
- 변환 방식은 UTF-8이 아닌 UTF-16으로 변경되는 값을 따름.
[ 풀이 2 ]
메모리 :
14196KB
시간 :124ms
BufferedReader, 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());
int sum = 0;
for (byte v : br.readLine().getBytes()) {
sum += v - 48;
}
System.out.println(sum);
}
}
여기서도 '0'
이나 48
을 빼주어야 한다.
댓글 남기기