steve11344   3년 전

아무리 생각해도 맞는거 같은데 뭐가 문제인가요....

kesakiyo   3년 전

지금 이 코드에서 잘못된 점은 지역변수로 선언된 변수를 초기화 없이 사용했단 점입니다.

기본적으로 지역변수는 쓰레기 값이 들어가 있습니다.

이론적으로 조금 들어가보자면 지역변수가 선언된 뒤 할당되는 시점은 프로그램이 실행되는 시점이기 때문에

사용하지 않는 메모리에서 변수를 할당해 주기 때문이죠

그렇기 때문에 cnt와 arr배열에는 쓰레기 값이 들어가 있을 확률이 아주 높습니다.

만약 이 코드로 정상적인 답이 나왔다면 운이 좋았다고 얘기를 해야할 것 같네요.

그리고 arr[42] = {0, }; 이 코드는 arr배열을 0으로 초기화를 시켜주는 코드가 아닙니다.

이는 arr[42] = {1, }; 을 넣어본 뒤 출력해 보면 알 수 있을것입니다.

따라서 이 문제점들을 해결하기 위해서는 두가지 방법이 있습니다.


1. 전역변수로 선언한 뒤 초기화 없이 사용한다.

-> 전역변수로 선언된 변수들은 기본적으로 NULL또는 0으로 초기화가 되어있습니다.


2. 지역변수로 선언할 때 또는 선언한 뒤 0으로 초기화를 해준다.


덧붙여서 얘기하자면 지역변수로 선언한 변수를 동시에 초기화 해주는 것은 실무에 있어서나 문제를 풀 때 있어서

예상치 못한 버그를 만들어 내지 않는 좋은 습관이라 할 수 있겠습니다.

steve11344   3년 전

감사합니다. 덕분에 통과했습니다!

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