먹었으면 뇌를 쓰자

백준 10952 java - A+B-5 본문

JAVA/백준 알고리즘

백준 10952 java - A+B-5

뇌이비 2022. 11. 14. 08:17

문제

 

 

 

잘못된 코드(*출력 초과)

 

이번 문제는 테스트 케이스가 주어지지 않았다.

그래서 반복 횟수가 정해진 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
Comments