난수 넣어서 배열에 입력한다음에 배열에 중복있으면 중복체크하는 프로그램인데
중복이 없는데도 중복문자 있다고 나오네요.
중복있으면 err라는 변수에 0을 기본값으로 +값해서 중복문장 출력하도록 했는데 중복문장 있든 없든 출력합니다
왜 그런지 설명좀요ㅠ
난수 넣어서 배열에 입력한다음에 배열에 중복있으면 중복체크하는 프로그램인데
중복이 없는데도 중복문자 있다고 나오네요.
중복있으면 err라는 변수에 0을 기본값으로 +값해서 중복문장 출력하도록 했는데 중복문장 있든 없든 출력합니다
왜 그런지 설명좀요ㅠ
중복이 나올수밖에 없는 코드인뎅
19번째 줄을 int i = j+1로 수정
왜 j+1넣으면 되는거냐 무슨 차이임
일단 본문스샷 코드는 딱바도 arr[j]==arr[i]인 상황이 나오는데? 당장 j루프 두번째돈다 치면 arr[1]==arr[1]부터 시작하는디
0이랑 같은게 있는지 체크하려면 0을제외한 0+1~length-1까지,
비교를 하는건데 j가 0일땐 이상이 없음. 근데 문젠 1부터다. 1이면 1+1부터 비교를 해야하는데(당연히, 자기 자신을 체크하면 err가 증가할수밖에) i가 1부터 시작하니까 아마 err값이 문자열의 문자수-1개 만큼 나오지싶은데
이런거 와닿지 않을땐 연습장 한장 뜯어서 거기다 대고 인덱스 하나하나 그려가면서 반복문을 수동으로 직접 그려가보면서 해보면 좀 보인다..
저런식으로 체크하는건 j가 n일때 i루프가 다 끝나면... 0~j까진 중복문자열이 없다는 검증이 된 상태이다. 그러므로 n+1번째 문자열을 비교함에 있어서 i가 1부터 시작하는건 맞지 않는다는거임. :-)