파이썬_알고리즘_공부_1

신태원·2022년 7월 15일
0

python_algorithm

목록 보기
1/6

네이버 부스트캠프를 떨어지고 바로 C++ 에서 파이썬으로 언어를 바꿨다.
꼭 이거때문에 바꿨다니보다는 언젠가는 바꿔야하지 않을까..? 라는 생각을 하고 있었고 이참에 그냥 바꾸기로 했다.

그래서 최근 며칠동안 계속 파이썬으로 백준을 풀고 있었고 중간중간 몇가지 유용한 기능이나 함수 혹은 업로드할만한 가치가 있는 문제들은 업로드를 하려고 한다.

C++에서는 별로 고민해본적이 없던 부분인데 우선 파이썬에서의 input()은 기본적으로 문자열로 취급해서 받음. 그래서 처음부터 int를 받고싶더라도 일단 문자열로 받아서 int형으로 반환해줘야됨.
근데 만약 여러개의 int값을 받고싶을땐 어떻게 해야할까?
input().split()을 이용하면 띄어쓰기를 기점으로 여러개의 변수에 바로 입력을 받을 수 있지만, 이건 어디까지나 문자열이다.
그렇다면 아래와 같은 방식으로 여러개의 int를 받아야될까?
계속해서 입력을 받아야하는 상황인데 for문 같은걸 써서 아래와 같은 식으로 받다가는 런타임 오류가 남..

a = int(input())
b = int(input())

이럴때는 위와같은 방식말고 아래와 같은식으로 map을 써서 변수를 받아주면 런타임 오류가 해결된다

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

그리고 위의 방법보다 조금 더 빠른 방식이 아래와 같은 방식..

import sys

a,b = map(int, sys.stdin.readline().split())

Python
rstrip을 하라는 건 문자열 자체를 변수에 저장하고 싶을 때 얘기지, 개행문자가 맨 끝에 들어와도 int 변환이나 split()을 그대로 할 수 있습니다. 즉 int(sys.stdin.readline()), sys.stdin.readline().split() 이렇게 해도 아무 문제 없습니다. 참고로 이름이 꽤 길기 때문에 저는 input = sys.stdin.readline을 맨 처음에 함으로써 쓰는 편입니다.
출처: (https://www.acmicpc.net/board/view/22716)

이런식으로 해주면 런타임 오류 안남!

또 이제 sys.stdin.readline() 는 입력의 처음과 끝까지 한꺼번에 다 받아옴으로써 입력이 없으면 알아서 그만하는..? 기능을 하게 해주는 기능도 있음.

import sys

lines = sys.stdin.readlines()

for i in lines:
	a, b = map(int, i.split())

이런식으로 해주면 된다.
예를 들어 입력이 1 5 3 2 4 3 5 2 였을 경우 알아서 1 5 / 3 2 / 4 3 / 5 2 처리해서 a, b 값으로 처리된다.
원래 보통 문제에서 N을 횟수로 주거나 하는데, 그게 없고 그냥 랜덤으로 입력을 해버릴 경우 EOF(end of file)을 처리하는 함수이다!


파이썬은 배열 받을 때 for문으로 하나씩 다 받아주면 런타임 오류남... ㅠ
밑에 처럼 받아줘야됨..

num_list = list(map(int, input().split()))
  • 얘는 근데 한줄에 걸쳐서 띄어쓰기 기준으로 입력하는 배열이다
arr = []

for i in range(n): # 원소의 개수가 n개일 때 
    arr.append(int(input()))
    #혹은 arr[index] 별로 받아줘도 될것같음ㅇㅇㅇ

정말 편하긴한데 까다롭네 파이썬.. C나 C++로 문제풀땐 런타임 오류 걱정해본적 많이 없는데 문제가 복잡하지 않은 이상..

profile
일단 배우는거만 정리해보자 차근차근,,

0개의 댓글