inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

나는야 포켓몬 마스터 이다솜

166

창신동 장첸

작성한 질문수 115

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"이 특수한 경우처럼 느껴지는데요. 이런 상황을 어떻게 처리하면 좋을지 조언을 구하고 싶습니다.

C++ 코테 준비 같이 해요!

답변 1

0

큰돌

안녕하세요. ㅎㅎ

만약 문제에서 순번이 0번째.. 이런식으로 주어진다면 0인 부분에 대한 예외를 처리하시면 됩니다.

if(value == 0) 이런식으로요.

아니면 +1를 해서 1번째 이렇게 풀어놓고 나중에 출력할 때 0번째 이렇게 하셔도 됩니다.

감사합니다.

0

큰돌

첨언을 하자면.

굉장히 좋은 질문입니다.

누군가는 그러한 것을 생각해서 질문하겠거니 했는데 do님이 질문주셨네요.ㅎㅎ

감사합니다.

1-E질문입니다!

0

517

2

3-L 틀린 부분 피드백 부탁드립니다.

0

820

2

1-A문제 순열재귀함수 질문입니다.

0

381

1

1-A 일곱난쟁이문제입니다

0

456

1

문제 풀 때 방향성에 대해

0

800

1

맥에서 vs code로 실행 관련 질문입니다

0

523

1

17071번 메모리 초과

0

386

1

1-C질문입니다!

0

419

2

2-B BFS 시간초과질문

0

629

2

1-O 13번 라인

0

441

1

6-J 놀이공원 문제 질문

0

381

1

구현관련 질문

0

482

1

강의 교안

0

319

1

실력을 더 올리고나서 강의를 보는 것이 맞을까요?

0

545

1

안녕하세요! 재귀함수에 관해서 질문드립니다

0

535

1

1-K

0

473

2

3-G번 질문있습니다.

1

473

3

3-C 실행 시간 질문드립니다.

0

493

1

4-A 문제 풀이 질문있습니다.

0

590

2

비트마스킹 연산자 "1의 보수" 영문 표기법

0

435

1

격자탐색 문제에서 BFS 시간복잡도 질문드립니다.

0

334

1

3-O go 함수 질문 드립니다.

1

446

2

4-A 출력 질문

0

303

1

1주차 1-O 질문드립니다

0

257

1