loading

알고리즘/알고리즘JAVA

[백준알고리즘/문자열] 11720번 문제 : 숫자의 합(자바/JAVA)

침착곰 2021. 5. 13. 10:23
반응형

안녕하세요

백준 알고리즘 단계별로 풀어보기 7단계 문자열의 숫자의 합을 풀어봤습니다

이번 문제도 자바를 조금만 공부했다면 어렵지 않게 풀 수 있는 문제입니다

전 다양한 방식으로 풀 수 있다고 생각하여 고민을 하다가 좀 시간이 걸려서 풀었습니다 ㅎ

제가 푼 방법에 대해서 알아보겠습니다!

 


문제 링크입니다

www.acmicpc.net/problem/11720

 

11720번: 숫자의 합

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

www.acmicpc.net

 

문제

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)

반응형
그리드형