먹었으면 뇌를 쓰자
백준 10952 java - A+B-5 본문
문제

잘못된 코드(*출력 초과)
이번 문제는 테스트 케이스가 주어지지 않았다.
그래서 반복 횟수가 정해진 for문이 아닌,
true/false로 반복하는 while문을 썼는데 출력 초과가 떴다.
무한 루프인가? 싶어서 더 찾아보니
break를 거는 방법이 있길래 추가했는데도 실패.

정답
while문을 쓰는 것도
break를 거는 것도 다 맞았는데 (신기)
묘하게 코드 순서 배치가 와르르맨션이었던 것 같다.
1) StringTokenizer 클래스는 while문 안쪽에서 선언해야 한다 (이전에 선언하면 런타임 에러)
줄 단위로 들어온 두 개의 입력 값을 쪼개는 전처리 자체도 반복되어야 해서 그런 것 같다.
2) 입력 값을 쪼개서 각각 변수 a,b로 선언하는 것도 반복되어야 하므로
마찬가지로 이전에 변수를 선언하지 않고, while문의 조건식을 'true'로 적은 뒤
while문 안에서 변수를 선언해야 한다
3) BufferedWriter 클래스 출력은 while문의 가장 마지막에 이루어져야 한다
(if문보다 먼저 적용하면 런타임 에러)
이유를 생각해봤는데 if문이 출력 뒤로 오게 되면
만약 a=0, b=0일 경우 출력을 먼저 해버리고 break가 걸리는 오류가 발생한다
곰곰이 생각해보니까 다 이유가 있었다.
다음 풀이에는 알고리즘을 좀 더 염두에 두고 코드 배치를 잘 해야겠다.

'JAVA > 백준 알고리즘' 카테고리의 다른 글
백준 1110 java - 더하기 사이클 (0) | 2022.11.16 |
---|---|
백준 10951 java - A+B-4 (0) | 2022.11.16 |
백준 2494 java - 별 찍기 2 (0) | 2022.11.09 |
백준 2438 java - 별 찍기 1 (0) | 2022.11.09 |
백준 11022 java - A+B-8 (0) | 2022.11.08 |