수학 문제.
입력받는 수가 양수인지 음수인지, 수의 범위가 모두 보장되어 있지 않기 때문에 이를 모두 고려해줘야 한다.
입력받은 범위에서 가장 작은 값을 기준으로, x로 나눈 나머지가 y인 가장 작은 값을 구한다.
그 수가 입력받은 범위 내에 존재하는지를 체크하고, 그 수에 x를 더한 값이 범위 내에 존재하지 않는다면 그 수를 출력하고, 그렇지 않으면 Unknwon Number를 출력한다.
코드는 다음과 같다.
a,b=map(int,input().split())
x,y=map(int,input().split())
if x==0:
print('Unknwon Number')
elif y<0 or y>=abs(x):
print('Unknwon Number')
elif x>0:
if a>b:
a,b=b,a
k=a%x
if k<=y:
ans=a-k+y
else:
ans=a+x-k+y
if ans<=b:
if ans+x<=b:
print('Unknwon Number')
else:
print(ans)
else:
print('Unknwon Number')
elif x<0:
if a>b:
temp=a
a=b
b=a
k=a%x
if k<0:
k+=-x
if k<=y:
ans=a-k+y
else:
ans=a+x-k+y
if ans<=b:
if ans-x<=b:
print('Unknwon Number')
else:
print(ans)
else:
print('Unknwon Number')
분기 나누기 귀찮은 문제.
음수로 나눈 나머지가 음수가 나와서, 이를 처리해줘야 했다.
'BOJ' 카테고리의 다른 글
백준(BOJ) 1005 ACM Craft(Python) (0) | 2022.08.05 |
---|---|
백준(BOJ) 14500 테트로미노(Python) (0) | 2022.08.04 |
백준(BOJ) 7576 토마토(Python) (0) | 2022.07.30 |
백준(BOJ) 7569 토마토(Python) (0) | 2022.07.30 |
백준(BOJ) 1083 소트(Python) (0) | 2022.07.25 |