https://codeforces.com/contest/1529/problem/A
시간 1초, 메모리 256MB
input :
output :
a
.a
배열에서 제거한 원소들의 개수를 출력하시오.조건 :
큰
원소들을 삭제한다.더 이상 삭제가 불가능 하려면 남아있는 원소들의 값이 동일 해야 한다. 원소들의 범위는 1 ~ 100 까지니까 1들 혹은 가장 작은 숫자들만 남으면 위의 행동을 그만 하면 된다.
6
6 4 1 1 4 1
이 입력 될 때 이 수를 오름차순으로 정렬 하면 1 1 1 4 4 6이 된다. 그리고
부분 문자열을
4 6 을 고르게 되면 6을 삭제 하고
1 4 4 를 고르면 4를 삭제할 수 있다. 이와 같은 방식으로 수행을 하는 것이다.
사실 그냥 가장 작은 숫자들의 개수를 세고 전체 길이에서 빼줘도 된다.
import sys
t = int(sys.stdin.readline())
for i in range(t):
n = int(sys.stdin.readline())
data = list(map(int, sys.stdin.readline().split()))
data.sort()
cnt, ans = 0, 0
prev = data[0]
for item in data:
if prev != item:
prev = item
cnt += 1
if cnt > 0:
ans += 1
if cnt == 0:
print(0)
else:
print(ans)
모든 개수를 체크하는 방법
import sys
t = int(sys.stdin.readline())
for i in range(t):
n = int(sys.stdin.readline())
data = list(map(int, sys.stdin.readline().split()))
data.sort()
cnt = 0
prev = data[0]
for item in data:
if prev != item:
break
cnt += 1
print(len(data) - cnt)
가장 작은 숫자의 수를 이용해 개수를 구하는 방법