[Python] 다양한 입력 방법 input() , sys.stdin.readline()

2021. 1. 8. 00:45· 언어/Python
목차
  1. 입력 (input)
  2. map 함수
  3. sys.stdin.readline()
728x90

개발자를 지망하는 사람들이 꼭 거쳐가는 사이트가 있다. 바로 '백준'이다.

 

백준에서는 취업에 필요한 코딩테스트를 연습할 수 있는 수 많은 알고리즘 문제를 풀어볼 수 있다.

 

그리고 대게 알고리즘 문제는 주어진 상황에 맞게 특정 입력값을 받고, 알맞은 값을 출력하여야 한다.

 

나는 바로 여기에서 큰 문제를 겪었다.

 

코드를 어떻게 짜야할지는 바로 떠올랐는데, 막상 코드를 적는 페이지로 들어가니 문제에서 주는 입력값을 어떻게 받아야 하는지 몰랐다.

 

그 동안은 이 문제를 해결하기가 귀찮아 입력을 굳이 신경 쓸 필요 없는 다른 알고리즘 사이트들을 이용해왔는데,

 

본격적으로 코딩테스트를 준비하다보니 백준을 이용하지 않을 수가 없었다.

 

그래서 이번 기회를 통해 입력에 대한 다양한 방법들을 알아보았다.

 

입력 (input)

입력을 위한 기본적인 함수로는 input이 있다.

 

input은 이용자들로 하여금 콘솔창에서 값을 입력받을 수 있도록 해주고, 보통 이렇게 입력된 값은 변수에 지정되어 사용된다.

 

해당 함수를 실행하게 되면, 콘솔창은 값을 입력받을 준비를 한다. 

 

사용자가 값을 입력할 수 있다.

 

값을 입력하게 되면, input()으로 입력받은 값은 a라는 변수로 지정되고, 해당 값을 출력할 수 있다.

 

 

값이 여러 개 주어질 때는 split 함수를 사용하여 해당 값들을 각각 나누어 리스트로 저장할 수 있다.

 

 

map 함수

 

하지만 보다시피, input을 통해 입력받는 값은 str이 기본형이다.

 

이 입력값들을 모두 int로 바꿔주고 싶다면, 그리고 더 나아가 입력값들을 일괄적으로 처리해주고 싶다면 map함수를 사용한다.

 

 

 

물론 map 함수로 가져온 값들을 list나 tuple형태로 만들수도 있다.

 

리스트 형태

 

튜플 형태

 

실제로, 많은 사람들은 input값을 map 함수를 사용해 정리하는 방식을 많이 사용한다.

 

그러니 map(int, input().split())) <- 이 표현은 손에 익을만큼 많이 사용해보도록 하자!

 

 

sys.stdin.readline()

 

추가적으로 알아두면 좋은 방법이 하나 더 있다. 바로 위에 적어놓은 sys.stdin.readline() 함수인데, sys는 파이썬 내장함수가 아니므로 import 해두고 시작하여야 한다.

 

 

 

 

두 함수는 모두 기능적 측면에서 다르지 않지만, 효율성에서 차이가 난다.

 

입력 받으려는 값이 매우 크다고 가정할 때, 해당 값들을 받아오는 것만으로 오랜 시간이 걸릴 수 있다.

 

sys.stdin.readline() 의 경우 input() 과 비교해 이러한 입력 과정에서 걸리는 시간을 줄여줄 수 있다.

 

또한, input의 경우 입력값이 존재하지 않을 때 수행된다면 EOFerror를 출력하지만,

 

sys.stdin.readline의 경우 그냥 빈 문자열을 반환해준다는 면에서 에러를 발생시킬 위험도 적다고 볼 수 있다.

 

실제로 다른 사람들의 코딩테스트 코드들을 읽어보면 두 방법이 혼용되어 사용되는 것을 확인할 수 있었다.

 

두 방법 모두 알아두고 잘 사용할 수 있도록 하자.

 

'언어 > Python' 카테고리의 다른 글

[Python] heapq(우선순위 큐) 사용법  (0) 2021.09.19
[Python] 집합 자료형 다루기  (0) 2021.08.04
[Python] collections 모듈의 Counter 함수  (2) 2021.04.04
[Python] 10진수 숫자를 2진수 숫자로 바꿔주기  (0) 2021.02.01
[Python] 반복문의 제어 continue, pass, break  (0) 2021.01.08
  1. 입력 (input)
  2. map 함수
  3. sys.stdin.readline()
'언어/Python' 카테고리의 다른 글
  • [Python] 집합 자료형 다루기
  • [Python] collections 모듈의 Counter 함수
  • [Python] 10진수 숫자를 2진수 숫자로 바꿔주기
  • [Python] 반복문의 제어 continue, pass, break
SeongOnion
SeongOnion
서버는 꺼지지 않아요
조무래기 코딩서버는 꺼지지 않아요
SeongOnion
조무래기 코딩
SeongOnion
전체
오늘
어제
  • 분류 전체보기 (167)
    • 알고리즘 (81)
      • 이론 (8)
      • 문제풀이 (73)
    • 언어 (15)
      • Python (9)
      • JavaScript (1)
      • JAVA (5)
    • 데이터베이스 (5)
    • 프레임워크 (15)
      • Django (7)
      • Spring (8)
    • 그 외 공부 (38)
      • 운영체제 (1)
      • 자료구조 (14)
      • 네트워크 (5)
      • CS (2)
      • 기타 (7)
      • 트러블 슈팅 (9)
    • 프로젝트 (0)
    • 개발자취 (8)
    • 회고 (3)
    • 주저리주저리 (1)
    • 기타 (비개발) (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 오픈소스
  • 회고
  • DRF
  • spring
  • 장고
  • Django
  • 코딩테스트
  • 트러블 슈팅
  • 이진탐색
  • 브루트포스
  • 그리디알고리즘
  • 데이터베이스
  • 웹
  • 큐
  • 정렬 알고리즘
  • 에라토스테네스의 체
  • 자바
  • 컨트리뷰트
  • 투 포인터 알고리즘
  • 소수
  • 백준
  • 프로그래머스
  • 코딩
  • BFS
  • 개발자
  • 스택
  • 알고리즘
  • BFS/DFS
  • DP
  • 파이썬

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
SeongOnion
[Python] 다양한 입력 방법 input() , sys.stdin.readline()
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.