[Python] 코딩테스트에서 자주 쓰는 문법

10228 단어 pythonpython

입력 받기

input() // sys.stdin.readline()

  • 입력 값 정수 한개
input()
  • 공백을 기준으로 정수 여러개
num_list = list(map(int, input.split('')))

→ input.split('')은 공백을 기준으로 분리하고 리스트를 만듦.

→ input.split()은 \n을 포함해서 분리하고 리스트를 만듦

→ map(int,input.split('')) 은 만들어진 리스트를 순회하면서 각 원소에 대한 자료형을 int로 변환해줌. input()은 모두 str이기 때문에.

→ map의 겉 부분에 list() 한 이유는 map 함수는 literable을 반환하기 때문에 list를 사용하기 위해 감싸준 것.


sys.stdin.readline()

import sys  
a = list(map(int, sys.stdin.readline().split()))
# a = [1, 2, 3, 4, 5]
  • 여러 라인 입력받아야 할 경우
import sys  
n = input()  
a = [sys.stdin.readline() for i in range(n)]  
# a = ["1 2 3", "4 5 6"]


Slicing

#문자열 원본
str='My name is Lee'

#문자열 뒤집기
str[::-1]

#홀수번째 문자열만
str[0::2]

#짝수번째 문자열만
str[1::2]

문자 검사

str = 'I am 26 years old'

#해당 문자열이 알파벳으로만 이루어져 있는지
str.isalpha() #f

#해당 문자열이 알파벳과 숫자로 이루어져 있는지
str.isalnum() #t

#해당 문자열이 모두 소문자인지 검사
str.islower() #f
'asd134$^$'.islower() #t --> 숫자나 특수문자는 무시

#해당 문자열이 모두 대문자인지 검사
str.isupper() #f

숫자 검사

#문자열이 숫자인지 확인
'12415'.isdecimal() #t
'123456'.isdigit() #t
'123456'.isnumeric() #t

→ 로마숫자, 한자숫자 등을 사용할때 리턴값이 다 다름

is numeric()이 사용범위가 제일 넓음. 특수문자든, 한자숫자든 로마숫자든 모두 TRUE를 리턴해줌


문자열 양식 변경

#대문자로 변경
'aaa'.upper() #AAA

#소문자로 변경
'AAA'.lower() #aaa

#첫 글자만 대문자로 변경
'abc!!'.capitalize() #Abc!!

포함된 글자 검색 및 검사하기

str='i am 26 years old'

#포함 여부
'm' in str #T

#'m'이 몇번째 인덱스에 위치하는지 찾기
str.index('m') #3
str.find('m') #3

#같은 문자가 2개 이상이면 첫 번째 위치만 반환
#대신 첫 번째 위치에 +1 이후 위치를 검색하면 다음 위치 검색 가능
str.index('a') #2
str.find('a') #2
str.index('a',4) #10
str.find('a',4) #10

#count 함수를 사용해 개수
str.count('a')

find → 없으면 -1 반환

index → 없으면 에러


재귀함수가 있는 경우 최대 재귀 깊이 설정

→ dfs, bfs 문제에서

import sys  
sys.setrecursionlimit(10**8) # 10^8 까지 늘림.

좋은 웹페이지 즐겨찾기