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가 실제 코테 환경이랑 유사하다고 하니 적응해보아야겠다.