일단 주어진 배열의 수들을 모두 정렬해놓고, 어떤수가 그 앞 인덱스의 수(배열 안의 더 작은 수) 로 나누어지면 없앱니다.왜냐하면 어차피 없애질 수이기 때문입니다.
그리고 이제 남아있는 수들의 조합을 구합니다. (1개, 2개,---n개까지)
구한 조합에 들어있는 모든 수들의 최소공배수를 유클리드 호제법 으로 구해줍니다.
그리고 수의 개수에따라 만약 홀수개라면 (n/최소공배수)를 더해주고, 짝수개라면 (n/최소공배수)를빼줍니다. 왜냐하면 중복되는 수를 카운트하기 위하여 그렇게 하는데, 조합개수가 하나인수는 n개중에서 어떤수의 배수이고, 2개는 두수의 최소공배수인데, 그전에 하나를 지울때 중복으로 지워진것을 카운트하기 위함입니다. 그렇게 해서1개 조합에서 n개조합까지 이전과 같은 방식으로 빼거나 더해줍니다.
그렇게하면 지워지는 수의 개수가 구해지는데, 이제 그 값을 n에서 빼줍니다.
분명히 로직이 어딘가 잘못되어서 틀린 것 같은데 틀린곳 지적해주시면 정말 감사하겠습니다..
Rose 5년 전
분명히 로직이 어딘가 잘못되어서 틀린 것 같은데 틀린곳 지적해주시면 정말 감사하겠습니다..