[문제]
[내 코드]
_ = input()
temp = [int(i) for i in input().split()]
print(len([t for t in temp if len([i for i in range(1, t+1) if t%i == 0])==2]))
약수의 개수가 두 개인 숫자의 갯수를 구하는 방식을 썼다
- 하지만 약수의 개수를 모두 구하는 대신에, 다른 수로 나누어지는 수를 먼저 탈락시키는 방법을 쓰면 조금 더 빠르지 않을까..
[개선안]
_ = int(input())
temp = [int(i) for i in input().split()]
cnt=0
for t in temp:
for i in range(2, t+1):
if t%i==0:
if t == i:
cnt += 1
break
print(cnt)
- 2부터 자기 자신까지 나누어가는데, 나누어떨어질 때 자기 자신이면 cnt를 더하고, 자기자신이 아니면 break한다
68ms로 살짝 더 빨랐다
'컴퓨터 > 코딩테스트' 카테고리의 다른 글
[백준/튼튼한기본기] 2581번: 소수 (0) | 2022.09.15 |
---|---|
[백준/튼튼한기본기] 1292번: 쉽게 푸는 문제 (0) | 2022.09.15 |
[백준/튼튼한기본기] 2693번: N번째 큰 수 (0) | 2022.09.12 |
[백준/튼튼한기본기] 2609번: 최대공약수와 최대공배수 (0) | 2022.09.12 |
[백준/튼튼한기본기] 2309번: 일곱 난쟁이 (3) | 2022.09.11 |