본문 바로가기
BOJ

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

by juLeena 2022. 7. 30.

문제 내용

 

수학 문제.

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

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