python/연습문제 풀이

[백준] python 10430번

연정양 2022. 10. 18.

 

10430번: 나머지

첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)

www.acmicpc.net

 

 

python 으로 백준 문제를 풀면서 계속 어려웠던 점은

1) 입력 숫자 범위를 넣어야 하는 것과 넣지 않아도 되는 것(이건 여전히 헷갈려서 눈치껏 하고있다)

2) RUNTIME ERROR가 나는 것 

  -> 여러 가지 변수를 첫 줄에 입력해달라는 말이 있는데 그렇게 하지 않거나(내 경험상)

      INPUT에 제한을 두지 않으면 처리 시간이 오래 걸려서 그렇다는 해결을 얻었다. 

 

처음에는 이 문제를 

A = int(input())

B = int(input())

C = int(input()) ... 이렇게 했더니 오류가 발생했다.

"첫째 줄에 A,B,C가 순서대로 주어진다"는 조건 자체를 이해하지 못해서 일어났던 문제.  

A,B,C = map(int,input().split())

이렇게 map과 split을 통해 input을 정수로 설정하고, 한 번에 + 한 줄로 정리했다. 

*map = map(적용할 함수 이름, 대응할 일련의 요소(input으로 받을 값))

+ input으로 받은 걸 split를 통해 각각 변수에 지정

 

(역시 어떻게 응용하느냐에 달린 것 같다. . .)

 

그리고 이 문제에서는 "2 이상 10000이하"라는 제한을 두고 있기에 if문을 통해 각각 변수의 범위 지정을 해 주었다. 

if (A >= 2 and A<= 10000) and (B >= 2 and B <= 10000) and (C >= 2 and C <=10000):

if문의 조건을 통과하면, 

print((A+B) % C)
print(((A % C) + (B % C)) % C)
print((A*B) % C)
print(((A % C) * (B % C)) % C)

print로 각각의 결과를 출력으로 얻을 수 있다. 

 

전체 코드는

A,B,C = map(int,input().split())
if (A >= 2 and A<= 10000) and (B >= 2 and B <= 10000) and (C >= 2 and C <=10000):
    print((A+B) % C)
    print(((A % C) + (B % C)) % C)
    print((A*B) % C)
    print(((A % C) * (B % C)) % C)

if 안에서 괄호를 통해 and 안의 and를 사용할 수 있다는 걸 배웠다 ..!

 

결론: 문제에서 물어보는 

1번 값과 2번 값은 동일하며,

3번 값과 4번 값 역시 동일함을 알 수 있다. 

댓글