코딩테스트를 위한 파이썬 문법 (4) (input, sys.stdin.readline, print)

Jane·2020년 11월 26일
4
post-thumbnail

이 포스팅은 이것이 취업을 위한 코딩테스트다 APPENDIX A 코딩테스트를 위한 파이썬 문법 파트를 읽고 공부한 내용을 정리하는 용도로 작성되었습니다.
APPENDIX A에 수록된 문법 외에 개인적으로 알고리즘 문제를 풀다가 막힌 문법들 또한 추가해두었으며, 예제는 직접 연습하며 작성하였기에 교재랑 다른 부분이 있습니다.

input()

  • 한 줄의 문자열을 입력 데이터로 받아온다.

>>> a = list(map(int, input().split()))
>? 7 9 4 1 3 # input 값 입력
>>> a
[7, 9, 4, 1, 3]
  • 위의 코드는 알고리즘 문제를 풀면서 거의 2문제당 1문제꼴로 사용했던 코드로 외워두고 사용하면 좋다.

    list(map(int, input().split()))
    → input()으로 입력 받은 문자열을
    → split()을 이용하여 띄어쓰기를 기준으로 나눈 리스트로 바꾼뒤,
    → map()을 이용하여 해당 리스트의 모든 원소를 정수로 바꾼 결과를
    → list()를 이용하여 다시 리스트로 변환한다.


sys.stdin.readline()

  • python의 input() 함수는 동작 속도가 느리기 때문에 시간 초과를 피하고 싶다면, sys.stdin.readline() 함수를 사용하는 것이 좋다.

    sys는 System-specific parameters and functions의 약자로, python interpreter가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다.

  • readline()으로 입력하면 엔터가 줄 바꿈 기호로 입력되기 때문에 rstrip()함수를 통해 공백 문자를 제거해 주어야 한다.
>>> import sys
>>> data = sys.stdin.readline().rstrip()
>? Hello World!
>>> print(data)
Hello World!

print()

  • , 이용: 각 항목이 띄어쓰기로 구분되어 출력된다.
>>> a = 5
... def func():
...    print("a의 값은", a, "입니다.")
... func()
a의 값은 5 입니다.
  • + 이용: 항목들이 띄어쓰기 없이 연결되어 출력된다.
>>> a = 5
... def func():
...    print("a의 값은" + a + "입니다.")
... func()
Traceback (most recent call last):
  File "<input>", line 4, in <module>
  File "<input>", line 3, in func
TypeError: can only concatenate str (not "int") to str

🌟 그러나 위의 예제에서 확인할 수 있듯이 int와 string을 연결하려고 하면 TypeError가 발생한다. 이를 해결하기 위해 str() 함수를 이용하여 int를 string으로 바꿔주면 된다.

>>> a = 5
... def func():
...    print("a의 값은 " + str(a) + "입니다.")
... func()
a의 값은 5입니다.

f-string

  • 문자열 앞에 'f'를 붙여 사용한다.
  • {} 안에 변수를 넣으면 자료형의 변환 없이도 int와 string을 함께 쓸 수 있다.
>>> a = 5
>>> def func():
...     print(f"a의 값은 {a}입니다.")
... func()
a의 값은 5입니다.

예제1) 정렬

left = 'apple'
result = f'|{left:<20}|' # 왼쪽 정렬
mid = 'banana'
result2 = f'|{mid:^20}|' # 가운데 정렬
right = 'strawberry'
result3 = f'|{right:>20}|' # 오른쪽 정렬
print(result)
print(result2)
print(result3)
# result
|apple               |
|       banana       |
|          strawberry|

예제2) dictionary

data = dict([('Jane', 25), ('Jisun', 26), ('Tom', 30)])
result = f'Jane\'s age: {data["Jane"]}'
print(result)
# result
Jane's age: 25

예제3) list 순회

names = ['Jane', 'Jisun', 'Jiseob']
i = 0
for x in names:
    i += 1
    print(f'name{i}: {x}')
# result
name1: Jane
name2: Jisun
name3: Jiseob

이번 포스팅에서는 예제를 직접 만들어 봤는데 도움이 되셨나 모르겠네요😂 이 시리즈가 코딩테스트를 공부하는데 조금이나마 도움이 되셨다면 💚를 눌러주세요😉


Source

0개의 댓글