상세 컨텐츠

본문 제목

[SW Expert Academy] 16002. 합성수 방정식 | 구현 | 파이썬, 소스코드, 정답

Coding Test/문제풀이

by yooputer 2023. 5. 17. 09:01

본문

https://swexpertacademy.com/main/main.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


문제 요약

  • n이 주어질 때 x - y = n을 만족하는 합성수x, y를 구하라.

문제 조건

  • 1 <= n <= 10^7
  • 2 <= x, y <= 10^9

시행착오

으아아 너무 복잡하게 생각했다.

합성수 = 소수가 아닌수 → 소수판별해야함 → 에라토스테네스의 체로 풀었는데 당연히 메모리부족..^^

 

문제 난이도가 D3인걸 고려하면 어려운 문제는 아닌데!! 왜!!! 그럴까 곰곰히 생각해보다가

아차 n*3 - n*2 = n이고 n*3과 n*2는 합성수라는 사실을 깨달았다

 

근데 하나의 테스트케이스에서 오답을 받았다.

n이 1일 때 x와 y는 3과 2인데, 3과 2는 소수이기 때문에 오류가 났던 것이다.

n이 1일때 예외처리를 해줌으로써 문제를 해결할 수 있었다


핵심 알고리즘

  • n*3 - n*2 = n이다. n*3과 n*2는 합성수이다. 
  • n == 1이면 x와 y가 3, 2가 되므로 합성수가 아니다. n==1일때는 예외처리가 필요하다.

소스코드

T = int(input())

for test_case in range(1, T + 1):
    n = int(input())
    
    if n == 1:
        print("#"+str(test_case), 9, 8)
    else:
        print("#"+str(test_case), n*3, n*2)

 

관련글 더보기