렝무식

[백준 11720번] 숫자의 합 (JAVA) 본문

Algorithm/Baekjoon

[백준 11720번] 숫자의 합 (JAVA)

렝9 2023. 1. 12. 03:33

BOJ - [11720] 숫자의 합


image


🖍 숫자의 개수를 입력 받은 후 개수 만큼의 숫자를 공백없이 입력받아 모두 더한 값을 출력하는 문제
(link) 11720 숫자의 합


[풀이 과정]

숫자를 "공백 없이" 받아온다는 것이 조건.
즉, 개수 n개를 입력 받으면 그 후에 숫자를 해당 개수 만큼 입력 받는게 아니라, 한번에 n자리수 숫자 만큼 받는 것이다.

처음에 문제를 이해 못했음.
그 후에도 뭐가 문제인지 몰라서 문제를 다시 봤는데 입력 형태가 좀 이상하더라..

image

입력 형태를 보면 숫자들이 붙어있다... '저러면 숫자 하나로 인식될텐데?' 라는 생각이 퍼뜩 들었다.
따라서 숫자를 따로따로 띄워놓는게 이 문제가 의도한 것임.

더 좋은 방법이 있을 것 같기도 한데, 일단 생각나는 방법은 문자열로 입력받은 후 char 데이터로 변환하여 아스키 코드 값으로 연산하는 방법이었다.

말그대로 0의 아스키 코드는 48이기 때문에, 0이라는 문자를 int 데이터에 넣으면 48이 된다. 이때 48만큼 뺄셈 연산을 해주면 원하는 정수 값을 얻을 수 있다.


[Pseudocode]

1. 숫자 개수 입력받기
2. 숫자를 String 데이터로 입력 받기
3. for  개수만큼 반복 
    4. 한 글자(숫자)씩 int 데이터로 변환(아스키 코드 숫자로 연산)
    5. 변환 후 합산

[Code]

import  java.util.*;

/**
* 백준 11720번
* 숫자의 합
* 분류: 수학, 구현, 문자열
*/
public  class  Problem2 {

    public  static  void  main(String[] args) {
        Scanner  input = new  Scanner(System.in);
        int  sum = 0;
        int  n = input.nextInt();
        String  s = input.next(); // 숫자를 문자열로 우선 입력 받음
        for(int  i=0 ; i<n ; i++) {
            // char 데이터로 변환 후 아스키 코드 값으로 연산 (0의 아스키 코드는 48)
            sum += s.charAt(i) - 48;
        }
        System.out.println(sum);
        input.close();
    }
}

[Result]

image


(2021.07.13 풀이분)
백준 문제 푸는게 아직 어색했을 때라 에러가 많다.
근데 지금은 그냥 '틀렸습니다' 가 많다..

Comments