Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

봄디의 개발일지

[백준 / 문자열] 11720번 : 숫자의 합 - (JAVA/자바) 본문

백준

[백준 / 문자열] 11720번 : 숫자의 합 - (JAVA/자바)

bomdy 2024. 7. 8. 23:46

📝 문제

백준 11720번 : 숫자의 합


💭 풀이 방법

  1. 둘째 줄에 숫자를 공백 없이 입력받으므로 String 변수로 입력받기
  2. 첫째 줄에 입력받은 숫자의 개수만큼 for문을 돌면서 charAt()으로 char 단위로 나누기
  3. 아스키코드 이용하기
  • 숫자 0번의 아스키코드 : 48번이므로, -48을 해야 실제 숫자가 된다.
  • 그 숫자를 반복문을 돌며 총 수의 합을 구한다.

⛔ 발생한 오류

위와 같은 오류는 scanner.nextInt()를 호출하고, scanner.nextLine()을 바로 호출했을 때 발생하는 문제이다.
scanner.nextInt()로 5를 입력하고 엔터를 치면, \n가 nextLine() 에서 읽히게 된다.
따라서 문자열은 입력을 받지 못하게 되고, for문에는 count만큼 charAt()을 실행할 수 없기 때문에 발생된다.


💡 해결 방법

scanner.nextInt() 와 scanner.nextLine() 사이에 scanner.nextLine()을 하나 더 입력해서 개행문자를 가져갈 수 있게 하면 된다.


😊 작성한 코드

package String;

import java.util.Scanner;

public class 숫자의_합 {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int count = scanner.nextInt();
        scanner.nextLine(); // 남아있는 개행처리를 위해
        String word = scanner.nextLine();

        int sum = 0;

        for (int i=0; i<count; i++) {
            int number = word.charAt(i)-48;
            sum += number;
        }

        System.out.println(sum);
    }
}

🚨 주의사항

  • 백준문제를 자바로 푼 경우, 제출할 때는 class 이름은 Main 으로, 코드 위에 package가 없어야한다.