BOJ

백준(BOJ) 1338 알 수 없는 번호(Python)

juLeena 2022. 7. 30. 20:58

문제 내용

 

수학 문제.

입력받는 수가 양수인지 음수인지, 수의 범위가 모두 보장되어 있지 않기 때문에 이를 모두 고려해줘야 한다.

입력받은 범위에서 가장 작은 값을 기준으로, 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')

 

분기 나누기 귀찮은 문제.

음수로 나눈 나머지가 음수가 나와서, 이를 처리해줘야 했다.