본문 바로가기

파이썬/알고리즘 정리

백준 알고리즘 1일차. (파이썬 input함수, split함수)

오랜만에 코딩을 그것도 이번에 처음배우는 파이썬으로 하려니깐 생각보다 막혔다.

 

백준사이트보니깐 단계별로 보기쉽게 나눠져있어서 첫번째 단계인 '입출력과 사칙연산' 총 11문제를 풀었는데 생각보다 시간이 걸렸다.

생각보다 구글링도 많이하고 그 과정에서 얻은것들이 좀 있다.

앞으로는 블로그에 백준 알고리즘을 풀면서 새로 알았던 사실들을 정리하는 글을 올리면 좋을 것 같다.

 

1. 역슬러쉬를 출력하려면 역슬러쉬를 두번 입력해야한다.

print("\\") // 출력 : \

2. 파이썬에서 사용자의 입력을 받는 함수는 input이다. 

name = input("이름을 입력하세요. : ")

 

3. 사용자의 입력을 받고 각각 나눠주는 함수는 split()이다.

a,b = input().split() // 입력을 3 1로했다면 a = 3, b = 1이 된다.

 

아무래도 백준 문제에서의 input함수와 split함수를 사용하는 방법만 안다고하면 다른 상황에서 활용하지 못할 수 있다.

그래서 input함수와 split함수를 더 공부해봤다.

 

split()함수는 문자열을 일정한 규칙으로 잘라서 리스트로 만들어 주는 함수이다.

 

기본적인 사용형태는 

문자열.split()

문자열.split('구분자')

문자열.split('구분자, 분활횟수)

문자열.split(sep='구분자', maxsplit=분활횟수)

이런식으로 사용이 가능하다.

 

백준 예제에서는 사용자의 입력을 input()함수로 받아 split()함수를 이용해줬다. 

기본 split()함수를 이용하게되면 띄워쓰기와 엔터를 구분하여 문자열을 나눠주게된다. 그래서 3번의 예제에서 a=3, b=1이 된것이다.

 

그럼 a = "a,b,c,d,e,d,e,f"이고 각각의 알파벳으로 나눠주고 싶을 상황에서는 .split(',') or .split(sep=',')처럼 해주면 된다

a = "a,b,c,d,e,f"
print(a.split(',')) // 출력은 ['a', 'b', 'c', 'd', 'e', 'f'](문자열 리스트)가 된다.
print(a.split(sep=',')) // 위와 동일

그럼 구분자까지는 알아봤는데 분활횟수는 무엇이냐. 분활횟수는 해당 문자열을 구분자를 기준으로 몇개를 나누어줄지에 대한 부분이다.

a = "a,b,c,d,e,f"
print(a.split(',', 2)) // 출력 : ['a', 'b', 'c,d,e,f']
print(a.split(sep=',', maxsplit=2)) // 위와 동일

분활횟수를 2로 정해주게되면 길이가 3인 리스트가 만들어지게된다.

구분자를 기준으로 2번 나누고 나머지는 나눠지지않고 그대로 리스트로 만들어진 것을 볼 수 있다.

 

input()함수는 사용자의 입력을 문자열로 받는 함수이다.

따라서 사용자가 입력값을 다른 형태로 쓰고싶다면 강제로 타입을 지정해줘야한다.

 

a = input("숫자를 입력해주세요") // 입력: 3
print(a) // 출력: 3(문자열)
print(int(a)) // 출력: 3(정수형)
print(a*a) // error

이와같이 숫자를 입력받아야하는 상황에서는 번거롭지않기 위해 애초에 입력을 정수형으로 받는 방법도 있다.

 

a = int(input("숫자를 입력하세요. : ")) // 입력: 3
print(a) // 출력: 3
print(a*a) // 출력: 9