SWEA (SW Expert Academy)/D3
[SWEA/D3] 16002 합성수 방정식
hellosonic
2023. 3. 17. 13:09
문제 바로가기
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
나의 코드 및 설명
- 먼저, 합성수인지 아닌지 체크하는 메서드를 작성하고, 자연수 x와 y의 값을 2부터 1씩 증가시키면서 미리 작성한 합성수 여부 체크 메서드를 통해 x, y 둘다 합성수라면 결과를 출력하고 아니면 x, y를 1씩 증가시킨 값을 체크해보는 방법으로 문제를 해결하였다.
count = 0
#합성수인지 찾는 메서드
def check(a):
global count
count = 0
#자연수 a가 주어졌을때, 자연수를 2부터 a//2 +1 까지 나누어본다.
for i in range(2, a//2 +2):
#2는 합성수가 아니므로 넘어간다
if a == 2 and i == 2:
continue
#만약 범위 중 나누어지는 게 있으면 합성수이므로 count에 1을 더해준다
if a % i == 0:
count += 1
#1과 자기자신 이외의 약수가 하나라도 있는 것을 확인했으니 반복문을 탈출한다.
break
#약수가 하나이상 있으면
if count != 0:
return True #True 를 리턴
t = int(input())
for test_case in range(1, t+1):
n = int(input())
# 어떠한 자연수는 2부터 시작한다.
x = 2
y = x + n
while True:
# 자연수 2와, 자연수와 n만큼 차이나는 y가 모두 합성수라면, 결과를 출력한다.
if (check(x) == True) and (check(y) == True):
print("#{} {} {}".format(test_case, y, x))
break
# x,y가 모두 합성수가 아니거나 하나만 합성수라면 x,y를 증가시키고 다시 체크해본다.
else:
x += 1
y += 1
피드백
백준 문제를 vscode 통해서 코드를 작성하고 풀었는데, SWEA는 코드 작성하기에 너무 불편한 것 같다.. 문제도 계속 위로 올려보면서 풀어야 되고, 띄어쓰기도 체크해야 되고, 여러모로 적응이 안된다.. 그래도 SWEA가 실제 코테 환경이랑 유사하다고 하니 적응해보아야겠다.