작성
·
158
0
https://www.acmicpc.net/problem/1620
위 문제의 『예제입력1』을 보면 26개의 포켓몬 이름이 1 ~ 26번의 번호를 가지게 됩니다.
atoi("12".c_str()); 의 경우 문제없이 int 12 값을 얻어낼 수 있는 반면
atoi("0".c_str()); 과 atoi("Butterfree".c_str()); 모두 int 0 값을 얻습니다.
(전자는 숫자 0 으로 변환가능하기 때문이고, 후자는 숫자로 변환불가능하다는 의미의 0을 리턴)
궁금한 점은 "0"와 int로 변환할 수 없는 문자열인 경우를 구분하지 못한다는데 있습니다.
문제에서 순번이 1부터 시작하는데, 만약 순번이 0부터 시작한다면
아래 강사님의 모범답안에서 19라인에서 입력값으로 "0" 문자열을 받게 되면
https://www.acmicpc.net/source/share/0f8a07e622564e12bd5f262fc8f0d61b
22라인(0번째 포켓몬의 이름을 출력하는)을 타지 못하고
20라인을 타게되어 "0"이란 이름을 갖는 포켓몬의 순번을 출력하는 일이 발생할 것으로 예상됩니다.
"0"이 특수한 경우처럼 느껴지는데요. 이런 상황을 어떻게 처리하면 좋을지 조언을 구하고 싶습니다.
답변 1
0
안녕하세요. ㅎㅎ
만약 문제에서 순번이 0번째.. 이런식으로 주어진다면 0인 부분에 대한 예외를 처리하시면 됩니다.
if(value == 0) 이런식으로요.
아니면 +1를 해서 1번째 이렇게 풀어놓고 나중에 출력할 때 0번째 이렇게 하셔도 됩니다.
감사합니다.
첨언을 하자면.
굉장히 좋은 질문입니다.
누군가는 그러한 것을 생각해서 질문하겠거니 했는데 do님이 질문주셨네요.ㅎㅎ
감사합니다.