백준 알고리즘/문자열

[JAVA 자바] 백준 11720번 : 숫자의 합

Sun720 2022. 6. 1. 02:46

▶ 문제

https://www.acmicpc.net/problem/11720

 

11720번: 숫자의 합

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

www.acmicpc.net

 설명

연속으로 입력된 숫자들을 모두 더하는 문제이다.

 

 

 

문제 풀이

🌱 풀이1.  read( ) 사용

입력받은 값을 정수로 형변환 한 뒤 10으로 나눈 나머지를 구하고,

10으로 나누는 것을 문자열이 끝날때까지 반복하여

나머지끼리 합하도록 하는 코드를 먼저 구상했었다.

그런데 제출할 때  런타임 에러 뜨는 문제가 생겼다.

더보기
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));
		br.readLine();

		String s = br.readLine();
		int num = Integer.parseInt(s);
		int sum = 0;
		for (int i = 0; i < s.length(); i++) {
			sum += num % 10;
			num /= 10;
		}
		System.out.println(sum);

	}
}

read() 메소드를 이용해서 한 글자씩 입력을 받는대로 플러스 연산을 하는 반복문 코드를 짜니 에러가 없었다.

read()가 반환하는 것은 char 형이였기 때문에 아스키코드에 따라서 '0' 혹은 48을 빼주도록 하였다.

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(int i=0; i<n; i++) {
			sum += br.read() -'0'; 
		}
		System.out.println(sum);

	}
}

 

 

🌱 풀이2. charAt( ) 사용

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

//charAt() 사용
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;

		String get = br.readLine();
		
		for(int i=0; i<n; i++) {
			sum += get.charAt(i) - '0';
		}
		System.out.println(sum);
	}
}

 

 

 

 

🌱 풀이3. split ("")사용

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;
		String[] get = br.readLine().split(""); 
		for (int i=0; i<n; i++) {
			sum += Integer.parseInt(get[i]);
		}
		System.out.println(sum);
		

	}
}

 

더보기
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));
		br.readLine();
		
		int sum = 0;
		String[] get = br.readLine().split(""); 
		for (String var : get) {
			sum += Integer.parseInt(var);
		}
		System.out.println(sum);		
	}
}

 

 

🌱 풀이4. substring( ) 사용

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;
		String input = br.readLine();
		for(int i=0; i<n; i++) {
			sum += Integer.parseInt(input.substring(i, i+1)); 
		}
		System.out.println(sum);
	}
}

 

 

 

🌱 풀이5.  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));
		br.readLine();
		int sum = 0;
		byte[] get = br.readLine().getBytes();
		
		for (byte value : get) {
			sum += (value - '0');
		}
		System.out.println(sum);		
	}
}

 

 

Log

728x90
반응형