크래프톤 정글(나만의 무기 만들기 WEEK 14 ~ )
8595 히든 넘버 (Java)
devkty
2025. 6. 16. 02:26
728x90
8595 히든 넘버 (Java)
https://www.acmicpc.net/problem/8595
첫번째 줄은 단어 길이 a 입력이 있어야합니다. 두번째 줄은 단어와 숫자로 된 단어가 입력되야 합니다. 만약, 연속된 숫자가 있다면 하나의 숫자로 판단되어야합니다.
결론적으로 문자열의 숫자를 알파벳 단위로 파싱하고 모든 숫자들의 합을 출력하면 됩니다.
자바 코드
import java.util.*;
import java.util.regex.*;
public class Main_8595 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 스캐너로 인풋을 받는다.
int a = sc.nextInt();
String b = sc.next(); // 숫자들을 문자열로 입력 받음
// long sum = 0; // 합을 0으로 초기화
int sum = 0;
Pattern p = Pattern.compile("\\d+"); // 하나 이상의 숫자 (연속된 숫자)
Matcher m = p.matcher(b);
// if (b.matches(".*\\d.*")) {
// while (m.find()) {
// sum += Integer.parseInt(m.group());
// }
// }
// else {
// sum = 0;
// }
while (m.find()) {
sum += Long.parseLong(m.group());
}
System.out.println(sum);
}
}
// input에 아무 숫자도 없을때를 고려하지 않아서 if문으로 조건을 추가했다.
// 근데 알고보니 while문에 그 조건이 내포되어 있다.
// 근데 왜 틀린거야? 반례도 없는 것 같은데
// 알아보니, 처리 길이 문제였다. int 자료형을 long으로 바꿨다.
트러블 슈팅
input에 아무 숫자도 없을때를 고려하지 않아서 if문으로 조건을 추가했습니다. 근데 알고보니 while문에 그 조건이 내포되어 있어서 롤백했습니다.
그런데도 왜 틀린걸까…? 반례도 없는 것 같은데 말이죠.
→ 알아보니, 처리 길이 문제였습니다. int 자료형을 long으로 바꿨더니 통과되었습니다.
728x90