13번째 줄이 이상하네요
11005번 - 진법 변환 2
5번 줄 int res[100]; 을 int res[100]={0}; 으로 바꿔보세요
답변감사합니다.. 근데 18번째 줄을 살펴보면, 말씀하신대로 처리했을경우 res배열안에 0로 초기화될텐데, 그러면 그 0을 유효숫자로 보게되어 결과가 이상해집니다..
@koosaga 님
100이라는것은 충분히 큰수로서 정한것이죠. 왜냐하면 10억까지만 입력을 받는다고 하였고, 이를 2진수로 나타낸다 하여도 32비트 안에 모두 표현할수 있구요. 32보다 적당히 큰 100을 그냥 임의로 잡은것이구요(32정도 만 해도 상관없겠네요).
전체적인 코드 로직을 말씀드리자면, 먼저 while문에서 나머지를 구해나갑니다.(초/중등수학때 배운 진법변환 하듯이요)
그리고 그 나머지들을 res배열에 int형태로 저장해두고, 후에 그것을 char로 바꾸어 res2에 저장해두는 것이 저 for문이 하는 일입니다. 자릿수는 최대 32비트라고 말씀드렸으므로 그냥 적당히 큰 수인 100으로 두었고, 저장된 범위를 벗어나게 되면 100까지도 가기 전에 else를 통해 for문을 탈출하는 것이지요.
흐음....ㅠ
@koosaga 님,
어떤 내용에 대한 질문투척이신지 이해를 잘 못해서 다른부분에대해 설명을 장황하게 펼쳐버렸군요..
지금 다시 읽어보니, 그 빈부분에 대한 값 셋팅이 가장 중요한 문제였네요.
훌륭한 지적을 잘 캐치해내지 못해서 부끄러울 따름입니다..(ㅠㅠ)
답변 대단히 감사드립니다 ! ㅎㅎㅎ
그런데, 갑자기 의문이 생겼는데요..
제 생각으로는 int res배열은 초기화하지 않았으므로 나머지 정보가 없는 곳에는
쓰레기값이 들어가있다고 판단해서 0~35 이외의 값이 있을거라고 가정했고,
그렇게 0~35 이외의 범위의 값일 경우. 쓰레기값을 만났을경우. 정보가 없는 곳에 도달할 경우.
를 마지막으로 판단했는데
그렇게 되지 않은 이유는 무엇이었을까요...? ㅠ
(+ 아, 실제로 제 VS2015에서는 결과는 정상적으로 나오는데, 저지에 제출했을때는 오답으로 뜨는 이유가...ㅠㅠ 무엇일까요)
"쓰레기값이 들어가있다고 판단해서 0~35 이외의 값이 있을거라고 가정했고,"
쓰레기 값이 쓰레기 값인 이유는 그 값에 어떤 게 들어갈 지 모르기 때문입니다. 0~35 이외의 값이 있을 거라고 가정할 이유가 전혀 없습니다. 당연하지만 증거가 없을 때는 함부로 가정하면 안됩니다. 아니면 그 가정에 책임을 지셔야 합니다.
참고로 쓰레기 값으로 들어갈 확률이 가장 높은 값은 0입니다. 컴퓨터를 껐다 키면 메모리가 휘발되었을 테니 다 0으로 차있죠. 그러면 아무데나 집으면 0일 가능성이 제 주민번호 앞자리일 가능성보다는 훨씬 크겠죠...?
댓글을 작성하려면 로그인해야 합니다.
wnsrnek3 6년 전
큰 수 조차 결과가 너무나도 잘나오는데
계속해서 틀렸습니다..라고하는데
출력문제인가싶은데 어떻게해도 결과가 안나옵니다..
부디 도와주십시오..