봄디의 개발일지
[백준 / 문자열] 11720번 : 숫자의 합 - (JAVA/자바) 본문
📝 문제
💭 풀이 방법
- 둘째 줄에 숫자를 공백 없이 입력받으므로 String 변수로 입력받기
- 첫째 줄에 입력받은 숫자의 개수만큼 for문을 돌면서 charAt()으로 char 단위로 나누기
- 아스키코드 이용하기
- 숫자 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가 없어야한다.
'백준' 카테고리의 다른 글
[백준 / 배열] 3273번 : 두 수의 합 - (JAVA/자바) (0) | 2024.10.27 |
---|---|
[백준 / 문자열] 10988번 : 팰린드롬인지 확인하기 - (JAVA/자바) (0) | 2024.07.10 |
[백준 / 문자열] 11365번 : !밀비 급일- (JAVA/자바) (0) | 2024.07.09 |
[백준 / 문자열] 10808번 : 알파벳 개수 - (JAVA/자바) (0) | 2024.07.08 |