📊 Algorithm&SQL

[Java/백준] 숫자의 합 #11720

오늘 ONEUL 2022. 9. 30. 00:30
💡 바로 로직을 구현하거나 코딩하지 말고, 문제의 내용과 조건을 꼼꼼히 분석하고 방향 설정하기!

 

 

문제

 

 

 

 

풀이

(1) 문제 분석하기

  • N의 범위가 1부터 100까지이므로 int형, long형과 같은 숫자형으로 담을 수 없음
  • 먼저 문자열 형태로 받아서 문자 배열로 변환 후, 숫자형으로 변환하여 더해야 함
  • 문자열을 숫자형으로 변환하기 위해 toCharArray 함수 사용(문자열을 char형 배열로 변환)
  • char형을 int형으로 변환하기 위해 아스키코드를 이해해야 함(문자 '1'과 숫자 1은 48 차이 / 아스키코드 48 = '0')

 

(2) 손으로 풀어보기

  1. 입력된 데이터를 String형으로 저장
  2. String형으로 입력받은 값을 char [] 형으로 변환 → toCharArray 이용
  3. 인덱스 0부터 끝까지 배열을 탐색하며 값을 int형으로 변환 → 아스키코드 성질 이용
  4. 결괏값에 더하여 누적

 

(3) 슈도코드 작성하기

슈도코드(Pseudo Code)란? 프로그램을 어떤 과정으로 진행시킬지 미리 적어보는 것
N값 입력받기
길이 N의 숫자를 입력받아 String형 변수 sNum에 저장하기
sNum을 다시 char []형 변수 cNum에 변환하여 저장하기
int형 변수 sum 선언하기
for(cNum 길이만큼) {
	정수형으로 변환하며 sum에 더하기
}
sum 출력하기

 

(4) 코드 구현하기

import java.util.Scanner;

public class SumOfNumbers11720 {
	// Point!
	// N의 범위가 1부터 100까지이므로 int형, long형과 같은 숫자형으로 담을 수 없음

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		// split을 이용한 풀이
		String[] nums = sc.next().split("");
		int result = 0;
		for (int i = 0; i < nums.length; i++) {
			result += Integer.parseInt(nums[i]);
		}
		System.out.println(result);
		
		// toCharArray를 이용한 풀이
		String sNum = sc.next();
		char[] cNum = sNum.toCharArray();
		int sum = 0;
		for (int i = 0; i < cNum.length; i++) {
			sum += cNum[i] - '0';
		}
		System.out.println(sum);
		
	}

}

 

 

 

 

11720번: 숫자의 합

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

www.acmicpc.net

 

※ 이 내용은 Do it! 알고리즘 코딩테스트 - 실전문제 풀이(JAVA) 강의를 듣고 정리한 내용입니다.