본문 바로가기
알고리즘/SWEA

SWEA D3 17642. 최대 조작 횟수 (python)

by 개발하는 호랑이 2024. 2. 25.

최대 조작 횟수

풀이

문제를 보고 이 뭔 말이고... 하고 있었다.

그러다가 보다보니 최대한 많은 횟수로 조작해야 하고 소수를 사용해야 한다고 하는데, 대신 1이 아닌 수로 조작을 해야 된다고 한다.

우선 난 함수를 만들어서 풀이를 했다.
1. A>B 또는 B-A == 1이면 조작으로 해결이 불가능하므로 -1을 반환
2. A==B이면 조작할 필요가 없으니 0을 반환
3. 이외의 경우에는 홀수와 짝수일 때를 구분해서 짝수면 차이의 //2를 해주면 된다. 홀수도 마찬가지로 //2를 해주면 되는데 이유는 +2만 하다가 중간에(마지막이든 처음이든) +3만 한 번 해주면 해결되기 때문이다.
3-1. 그런 이유로 홀수든 짝수든 상관없이 (B-A) // 2의 값을 반환해 주면 된다.

def solution(A,B):
    if A > B or B-A == 1:
        return -1
    elif A==B:
        return 0
    else:
        # #차이가 짝수일 때
        # if (B-A) % 2 == 0:
        #     return (B-A) // 2
        # #차이가 홀수일 때
        # else:
        #     return (B-A) // 2
        # 짝수일때나 홀 수 일때나 똑같군
        return (B-A) // 2

T = int(input())
for testcase in range(1, T+1):
    A, B = map(int, input().split())
    # A에 임의의 소수를 더한다
    # B에서 임의의 소수를 뺀다.
    answer = solution(A,B)
    print(f'#{testcase} {answer}')