milkwmerry   3년 전

반례 좀 부탁드립니다.. 왜 틀렸는지 도무지 모르겠습니다. 

죽었다 깨어나도 제가 맞는 것 같으니 차라리 저 좀 죽여주십시오.. ㅜㅜㅜ

제가 풀이한 방법은 첫번째 수는 정수 형태로 입력받고, 두번째 수는 크기가3인 배열 형태로 입력받아 자리에 맞게 1,10,100 을 곱해 각각 계산하는 식 입니다.

 

두번째 수를 크기가 3인 배열에 자리수대로 넣고, int로 변환하고 -48을 빼준 뒤에,  자리수에 맞게 10의 제곱을 곱한 뒤, ( 각각 1, 10, 100 )

첫번째 수 x 1자리수 (1) ---------> 3번

첫번째 수 x 2자리수 (10) --------> 4번

첫번째 수 x 3자리수 (100) -------> 5번

3번 +4번 + 5번 --------------------> 6번

이렇게 구했습니다.

출력시에는 출력 형식에 맞게 10 과 100을 또 나눠줬구요.

처음,중간, 마지막에 0을 넣어봐도 모두 정답이고, 반례가 없는데요 ㅠㅠ

ikeelee7742   3년 전

472

100

하시면 에러납니다

exponential_e   3년 전

answer[3] += 를 사용하시려면 answer 배열 초기화가 필요하지 않을까요..?

자바유저라 자세힌 모르나 C는 배열 초기화가 안되어있으면 이상한 값이 할당되는 것으로 알고있습니다.

제가 작성자님 코드로 돌려본 예제는 아래와 같이 나옵니다.

milkwmerry   3년 전

ikeelee7742 님 답변 감사합니다. 그런데 472 100 넣어도

0

0

472

47200 

으로 정답이 나왔습니다. ㅠㅠ 제 맥북에서 사용하는 xcode가 이상한가봅니다.. 반례 찾는일이 정말 쉬운게 아닌데 코드 읽어주시고 반례 찾아주셔서 감사합니다 윈도우 컴퓨터로 다시 해보겠습니다.

exponential_e님 말씀대로 배열을 초기화 한 이후에 정답으로 표시되었습니다. 중요한건 배열 초기화 였네요,,, 

초기화 하지 않고 사용했더니 틀렸습니다 로 나왔던 것 같습니다. 긴 코드 읽고 검토해주셔서 감사합니다..ㅠㅠ 놓칠리가 없다고 생각해서 이런 기본적인걸 놓쳤네요...

--

추가로 맥북을 사용하시고, xcode 를 사용해서 c 언어 코딩하시는 분이 계실까봐 위 내용 말고도 제가 겪은 문제를 공유합니다.

위 코드에서 초기화 부분을  

char valueB[3] ;

int valueC[3] = { 0 } ;

int answer[4] = {0,0,0,0};

int firstValue = 0;

로 하면 백준 채점시 정답으로 나옵니다. 


int
firstValue = 0;

char valueB[3] ;

int valueC[3] = { 0 } ;

int answer[4] = {0,0,0,0};


이렇게 선언해도 백준에선 정답으로 나옵니다.


그런데 xcode 에서 int firstValue 값이 char valueB[3] 보다 먼저 선언 되면 firstValue 값에 쓰레기값이 들어갑니다. 0이나 255 같은...


그래서 xcode 에서는 


char
valueB[3] ;

int valueC[3] = { 0 } ;

int answer[4] = {0,0,0,0};
int
firstValue = 0;

이렇게 선언해야 제대로 작동이 됩니다.. 

여러모로 고생했던 문제네요 ㅠㅠ 

댓글을 작성하려면 로그인해야 합니다.