Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Java #코딩테스트
- 2447
- 7568
- 11053
- Java #백준 #코딩테스트
- 코딩테스트
- boj
- Spring #Java #Spring Boot
- 백준
- python
- Spring #Java #Spring Boot #@BeforeEach #@AfterEach
- Spring
- 1110
- kakaocloudschool
- 파이썬
- 카카오 클라우드 스쿨
- java
- 24479
- Spring #Java #Spring Boot #싱글톤
- 9020
- SpringTokenizer
- 알고리즘
- kakaocloud
- node
- sequelize
- 15552
- 11054
- 카카오클라우드스쿨
- Java #오븐시계 #백준
- Spring #Spring Boot #Java
Archives
- Today
- Total
YoungSoo
백준 - 골드바흐의 추측(9020 파이썬 풀이) 본문
제가 처음 푼 코드는 코드도 길고 시간도 오래 걸리는 코드였습니다.
def isPrime(a):
if a<2:
return False
for i in range(2, int(a**0.5)+1):
if a%i == 0:
return False
return True
t = int(input())
for _ in range(0,t):
n = int(input())
a=[]
arr=[]
if isPrime(n//2):
print(n//2, n//2)
else :
for i in range(2, n):
if isPrime(i):
a.append(i)
for i in a:
if isPrime(n-i) and n-2*i>0:
arr.append(n-2*i)
if len(arr)>0:
c = (n-min(arr))//2
print(c, n-c)
먼저 소수를 구하는 isPrime 함수를 만들어줍니다.
그 뒤에 n을 2로 나눈 값이 둘 다 소수라면 n을 2로 나눈 값을 출력해주고 그렇지 않다면 소수를 모두 배열에 넣어두고
또한 소수이고 0보다 큰 수를 또 다른 배열에 넣어주고 제일 작은 값을 이용해 값의 차이를 구해 값을 도출했다.
다 풀고 더 간단한 코드를 찾기 위해 검색을 해봤는데 더 간단하게 풀 수 있는 방법이 있었다.
def isPrime(a):
if a<2:
return False
for i in range(2, int(a**0.5)+1):
if a%i == 0:
return False
return True
t = int(input())
for _ in range(t):
n = int(input())
b, c = n//2, n//2
while b>0:
if isPrime(b) and isPrime(c):
print(b, c)
break
else:
b -= 1
c += 1
똑같이 값을 입력 받고 입력 받은 값을 2로 나누어 둘 다 소수이면 바로 출력해주고 아니라면 -1, +1씩 해주고 그 과정을
반복하는 코드가 있었다..
'코딩테스트' 카테고리의 다른 글
백준 - 덩치(7568번 파이썬 풀이) (0) | 2022.12.13 |
---|---|
백준 - 별찍기-10(2447번 파이썬 풀이) (0) | 2022.12.13 |
백준 - 소수 찾기(1978번 파이썬 풀이) (0) | 2022.12.02 |
백준 - 달팽이는 올라가고 싶어(2896번 파이썬 풀이) (0) | 2022.12.01 |
백준 - 한수(1065 Java 풀이) (0) | 2022.11.05 |