본문 바로가기

ALGORITHM

알고리즘 스터디, 01-번외: 백준 1712번, map(int,input().split()) 에 관하여[PYTHON][파이썬]

1712번, 손익 분기점을 풀 때 다음과 같은 코드가 나왔다. 

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

if B>=C:
    print(-1)
else:
    print(int(A//(C-B)+1))

이때의 map(int,input().split()) 에 대하여 자세히 짚고 넘어가고자 한다.

 

input

input은 입력된 값을 문자열로 인식한다. 기본형 input()의 괄호 안에 아무것도 안 적으면 아래와 같이 공백의 입력란 만 나온다.

괄호 안에 문자열을 적으면 공백의 입력란 대신 그 문자열이 나타난다. 

이렇게 말이다. 

 

int(input())

입력값을 숫자로 인식하고자 한다면 다음과 같이 int함수를 함께 써주어야 한다.

기본형은 int()이다. 이 함수는 괄호 안의 것을 정수형으로 바꾸어 준다.

둘의 차이를 알겠는가?

 

split()

입력값을 두 개 이상으로 구분하고자 한다면 다음과 같이 split 함수를 써주면 된다.

split 함수는 '한 문자열을',  '나누어', '리스트로', '구분해 준다.'

split함수를 이용하면 다음과 같이 띄어쓰기를 기준으로 입력값을 구분해준다. 

혹여, 괄호 안에 특정 문자 등을 넣으면 해당 문자를 기준으로 문장이 나뉜다.

꽤 재미있다.

 

이번에는 input()에 split() 함수를 결합해 보자.

각 숫자 또한 각각의 값을 리스트로 나누어 주었다. 

그럼 이러한 변형은 어떨까?

각각의 값을 정수의 값으로 받고 싶었는데 오류가 난다. 

그의 변형도 마찬가지. int 함수는 리스트를 정수형으로 바꾸어 줄 수가 없다.

 

그렇기에 map 함수를 이용해야 한다.

 

map(int,input().split))

이러할 때 식을 간략히 하는데 map 함수가 필요로 한다. 

map 함수의 기본형은 map(적용할 함수, 반복 가능한 자료형)이다. 

다음 예시를 보면 리스트도 정수형으로 출력됨이 보인다. 

 

마지막으로 map(int, input().splut())이란 식을 활용해보자