최대 조작 횟수
풀이
문제를 보고 이 뭔 말이고... 하고 있었다.
그러다가 보다보니 최대한 많은 횟수로 조작해야 하고 소수를 사용해야 한다고 하는데, 대신 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}')
'알고리즘 > SWEA' 카테고리의 다른 글
SWEA D3 18662. 등차수열 만들기 (python) (1) | 2024.02.26 |
---|---|
SWEA D3 16910. 원 안의 점 (python) (0) | 2024.02.25 |
SWEA D3 16800. 구구단 걷기 (python) (1) | 2024.02.24 |
SWEA D3 7584. 자가 복제 문자열 (python) (0) | 2024.02.21 |
SWEA D3 19113. 식료품 가게 (python) (0) | 2024.01.30 |