본문 바로가기

[백준] 파이썬 - 단계별로 풀어보기

[백준] 파이썬 10430번(나머지) - 단계별로 풀어보기

백준 알고리즘 사이트 10430번 문제를 파이썬으로 코딩해 보도록 하겠습니다.

문제는 아래와 같습니다.

 

https://www.acmicpc.net/problem/10430

 

10430번: 나머지

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

www.acmicpc.net

 

 

정답

#1

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

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

#2

a, b, c = input().split()
a = int(a)
b = int(b)
c = int(c)

print((a+b)%c)
print(((a%c)+(b%c))%c)
print((a*b)%c)
print(((a%c)*(b%c))%c)

 

문제풀이

A, B, C = input().split()	# 입력되는 문자를 input()함수로 입력받고 split()함수로 나누어 A,B,C 변수에 저장

input() 함수 : 사용자로부터 문자열을 입력받을 때 사용하게 된다.

  1. 변수 = input() 이렇게 작성하면 입력받은 문자를 변수에 선언할 수 있게 된다.
  2. 문자열 형태로 입력받으므로, 숫자 1과 2를 입력받는 게 아니라 '1 2'라는 숫자 두 개 사이에 공백이 있는 하나의 문자열을 입력받는다.

split() 함수 : 입력받는 문자를 나눌 때 사용하는 함수이다.

  1. 문제를 보면 숫자 두 개를 한 줄에 입력받는데 두 개의 숫자 사이에는 공백으로 구분되어 있다. 이런 경우 공백을 기준으로 숫자를 나누면 된다.
  2. 문자열 뒤에 점을 붙이고 split( )을 써주면 된다.
    • input( ). split( )은 입력받는 문자가 아직 정해지지 않았으나 어떤 문자이건 공백을 기준으로 나누겠다는 의미이다.
    • 괄호 안에 아무것도 넣지 않으면 공백(띄어쓰기, 탭 등)을 기준으로 문자열을 나눈다.
  3. A, B = input( ). split( ) 문장에서 = 왼쪽에 A, B 두 개로 구분한 것은 튜플(tuple) 자료형의 성질을 이용한 것이다.
    • = 우측에서 입력받은 문자를 공백을 기준으로 나누게 되면 두 개의 문자로 나누어지게 된다. 그 두 개의 문자를 각각 A, B 변수에 저장하겠다는 의미이다.

int() 함수 : 문자형을 숫자형으로 변형할 수 있다. int는 숫자 중에서도 정수를 의미한다.

  1. 문제에서 요구하는 것은 두 개의 정수를 + 연산자로 더하는 것이다. 문자열에서도 + 연산자를 사용할 수 있으나 그러면 '1'과 '2'를 더해서 '12'가 된다.
  2. int() 를 사용하여 숫자로 변환하면 출력했을 때 두 수를 더한 값이 출력된다.

 

 map() 함수 : 파이썬의 내장 함수로 여러 개의 데이터를 한번에 다른 형태로 변환할 때 사용한다. 
  1. 여러 개의 데이터를 담고 있는 리스트(List)나 튜플(tuple)을 대당으로 주로 사용하는 함수입니다.
  2. map() 함수의 기본문법은 map(변환함수, 순회 가능한 데이터)
  3. map() 함수는 첫번째 인자로 넘어온 변환 함수를 두번째 인자로 넘어온 모든 테이터를 상대로 적용해 줍니다.