42로 나눈 나머지는 0 ~ 41입니다. 42칸의 배열을 만들고, 배열의 모든 값을 0으로 초기화한 후 입력값을 받을 때마다 42로 나눈 나머지의 값을 인덱스로 하여 배열에 1을 더해주고 마지막에 0~41까지 배열을 돌면서 그 값이 0이면 그러한 나머지가 한 번도 나온 적이 없는 것이고 1 이상이면 한 번이라도 나온 것이니 count를 증가시키는 방법으로 하면 어떨까요?
3052번 - 나머지
19번째 줄부터 25번째 줄을 보면,
for(a=i+1; a<10; a++)
를 보면 체크해야 될 부분이 이전에 입력되었던 나머지값이 현재 입력되는 값과 같은지인데,
그렇게 되면 체크해야 될 부분은 "k[i+1]부터 k[9]까지"가 아닌, "k[0]부터 k[i-1]까지" 입니다.
또한, 21번째 줄부터 24번째 줄을 보면,
if(K[i]==K[a]) { count--; }
이 부분에서, 입력된 값과 같은 값이 이전에 나왔다면 총 count 개수인 10에서 1씩 빼주는 형식으로 코드를 짜신것 같은데,
같은 값이 나오는 순간 count를 빼주고, for문 break를 해주어야 19번줄의 for문을 계속돌아 중복값으로 인해 여러번 count가 빼지는것을 방지 할 수 있습니다.
위에 작성하신 코드대로 작성하실 경우, 위부분들을 유의하여 고치시면 될 것 같습니다!
댓글을 작성하려면 로그인해야 합니다.
wldnd32 1년 전
예제 2번과 같이 모두 나머지가 0 0 0 0 0 0 0 0 0 0 0 일 때,
19번째 줄에서 첫 사이클에서 -9가 이루어지고
두번째 사이클(i=1일때)부터 멈춰 주어야 하는데 이러한 상황에서
어떻게 해야 할지 도무지 감이 잡히질 않습니다.
28~31번째 줄은 무시하셔도 됩니다.