안녕하세요
백준 알고리즘 단계별로 풀어보기 7단계 문자열의 숫자의 합을 풀어봤습니다
이번 문제도 자바를 조금만 공부했다면 어렵지 않게 풀 수 있는 문제입니다
전 다양한 방식으로 풀 수 있다고 생각하여 고민을 하다가 좀 시간이 걸려서 풀었습니다 ㅎ
제가 푼 방법에 대해서 알아보겠습니다!
문제 링크입니다
문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
출력
입력으로 주어진 숫자 N개의 합을 출력한다.
문제 풀이
문제는 세 가지 방법으로 풀었습니다
1. charAt
첫 번째 방법은 charAt 방법으로 풀었습니다
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 선언 및 반복할 문자열 변수 N 선언
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
// 데이터 입력 및 합계 변수 선언
String b = br.readLine();
int sum = 0;
// for문과 charAt(i)를 사용 합계 계산
for(int i = 0; i < N; i++)
{
sum += b.charAt(i) - 48;
}
// 결과 출력
System.out.print(sum);
}
}
2. string[] 배열
두 번째 방법은 string[] 배열 방법으로 풀었습니다
spilit을 사용하여 String[] 배열로 나누어서 풀은 방식입니다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
// BufferedReader 선언 및 반복할 문자열 변수 N 선언
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
// 데이터를 split을 사용 배열로 입력 및 합계 변수 선언
String[] b = br.readLine().split("");
int sum = 0;
// for문을 사용하여 배열의 합 계산
for(int i = 0; i < N; i++)
{
sum += Integer.parseInt(b[i]);
}
// 결과 출력
System.out.print(sum);
}
}
3. br.read()
세 번째 방법은 br.read() 방법으로 풀었습니다
br.read()로 데이터를 입력하자마자 바로 계산하여 결과를 출력합니다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
// BufferedReader 선언 및 반복할 문자열 변수 N 선언
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
// 합계 변수 선언
int sum = 0;
// 반복문을 사용 입력하면 바로 계산
for(int i = 0; i < N; i++) {
sum += br.read() - 48;
}
// 결과 출력
System.out.print(sum);
}
}
속도 비교
1. charAt
2. String[] 배열
3. br.read()
순으로 속도 비교입니다
메모리는 charAt방식이 제일 적게 나옵니다
하지만 속도는 String[] 배열로 풀은 것이 가장 빠르게 나오는 것을 볼 수 있습니다!
제 생각에는 속도, 시간 모두 3번 방식이 제일 빠를 것 같았는데 다른 결과가 나왔네요...
이상 백준 알고리즘 11720번 숫자의 합을 풀은 내용이었습니다!
다음 문제 : 2021.05.15 - [알고리즘/알고리즘JAVA] - [백준알고리즘/문자열] 10809번 문제 : 알파벳 찾기(자바/JAVA)
이전 문제 : 2021.05.12 - [알고리즘/알고리즘JAVA] - [백준알고리즘/문자열] 11654번 문제 : 아스키 코드(자바/JAVA)
'알고리즘 > 알고리즘JAVA' 카테고리의 다른 글
[백준알고리즘/문자열] 2675번 문제 : 문자열 반복(자바/JAVA) (0) | 2021.05.15 |
---|---|
[백준알고리즘/문자열] 10809번 문제 : 알파벳 찾기(자바/JAVA) (0) | 2021.05.15 |
[백준알고리즘/문자열] 11654번 문제 : 아스키 코드(자바/JAVA) (0) | 2021.05.12 |
[백준알고리즘/함수] 1065번 문제 : 한수(자바/JAVA) (0) | 2021.05.10 |
[백준알고리즘/함수] 4673번 문제 : 셀프 넘버(자바/JAVA) (0) | 2021.05.09 |