adfsfsf   4년 전

https://www.acmicpc.net/board/view/45813

위 링크의 코드를 저격해봅니다. 실험삼아 시도했더니 정답처리가 됩니다. 물론, 작성자의 질문 내용대로 ar을 전부 -1로 초기화 한 상태로 제출 시도를 하였습니다.



1

2

43

42

84

23

25

35

34

32

위와 같이 들어갈 때, 링크의 코드대로 가면

1이 들어왔을 때(i = 0)

cnt가 0이므로 for문을 돌지 않고, 따라서 ar[0] = 1(1%42 = 1)이 됩니다. cnt는 1이 됩니다.

2가 들어왔을 때(i=1)

cnt가 1이므로 ar[0]까지 확인합니다. 2%42가 2이미로 flag는 true입니다. 따라서 ar[1] = 2가 됩니다. cnt는 2가 됩니다.

43이 들어왔을 때(i=2)

cnt가 2이므로 ar[1]까지 확인합니다. 43%42가 1이므로 flag는 false입니다. cnt는 그대로 2입니다.

42가 들어왔을 때(i=3)

cnt가 2이므로 ar[1]까지 확인합니다. 42%42는 0이므로 flag는 true입니다. 따라서 ar[3] = 0이 됩니다. cnt는 3이 됩니다.

84가 들어왔을 때(i=4)

cnt가 3이므로 ar[2]까지만 확인합니다. 따라서 flag는 true가 되고, ar[4]가 0이 됩니다. cnt는 4가 됩니다. 이 때, 42와 84는 둘 다 나머지가 0이므로, 오류가 납니다.

23이 들어왔을 때(i=5)

  cnt가 4이므로 ar[3]까지 확인합니다. 23%42 = 23이므로 flag는 true, ar[5]는 23이 됩니다. cnt는 5가 됩니다.

이후의 다른 수들은 23과 마찬가지로 이전에 동일한 나머지가 들어온 적이 없었기에 최종적으로 cnt는 9가 됩니다. 하지만 cnt는 8이 되어야 하므로 오답 처리가 되어야 합니다.


테스트 케이스 추가가 필요한 듯 합니다. 위의 예시 같은 경우로 부탁드립니다.

startlink   3년 전

재채점했습니다.

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