문제풀며 알아가는 것들(python)
input()함수는 시간이 오래 걸리기 때문에 대신 사용해주는 코드 (파이썬)
- import sys ##라이브러리
- sys.stdin.readline() ##input() 대신 넣어 사용
readline은 띄어쓰기를 포함하여 한줄을 그대로 받아들일때 사용
readlines는 띄어쓰기도 포함하여 한줄을 받지만 이때 엔터를 치면 종료되던 readline과 달리 엔터를 엔터 또한 리스트로 들어가여 계속 입력됌
strip(‘’)
- readlines와 같이 엔터를 함께 받는 함수들을 사용할때 엔터를 없애야하는 경우도 자주 발 생하는데 이때 엔터를 없애주는 함수
오른쪽 왼쪽에서 나오는 모든 문자 삭제
괄호안에 여러개의 문자가 있다면 괄호안에 없는 문자가 나올때 까지 삭제
rstrip , lstrip 각각 오른쪽부터 왼쪽부터 없애다가 다른문자 나오면 멈춤
띄어쓰기해서 값 입력하여 리스트로 만들어주는 식 (파이썬)
- num=list(map(int,input().split()))
딕셔너리( {key : value} )(파이썬)
- key값을 통해 value를 쉽게 찾을수 있다.
- dict={set_num[i]:i for i in range(len(set_num))} 이런식으로 관호{} 안에서 반복문을 통해 딕셔너리 생성 가능
set함수(파이썬)
- 집합 자료형
보통 중복된 문자를 없애줄때 많이 사용
리스트를 넣어도 {}로 변환되어 나오기때문에 list를 이용하여 변환해주기 필요
시간복잡도 : O(len(..))
Sort함수(사용예시 : l.sort())(파이썬)
리스트를 순서대로 해주는 함수
- 시간복잡도 : O(N Log N) (머지정렬과 계수정렬 기반 하이브리드 함수)
Reverse함수(파이썬)
- 배열을 역순으로 정렬해주는 함수
[1,2,3,4]=>[4,3,2,1] 로 바꿔줌
[“1234”]=>[“4321”] 로 바꿔주는게 아니다
시간복잡도 : O(N)
입력의 차이(123을 입력)(파이썬)
- arr_input=input() -> 123 = 그냥 문자열 통째로 입력됌
- arr_input=list(input()) -> [1,2,3] = 문자열을 잘라서 리스트로 만들어 입력됌
list함수(파이썬)
list함수를 사용하면 전에 입던 리스트를 삭제하고 새로운 리스트를 만듬
find함수(파이썬)
find(“”)함수는 괄호안에 들어있는 문자열의 위치를 찾아주는 함수이다.(만약 찾는 문자열이 없다면 –1 반환)
- insert함수보다 슬라이싱으로 문자열을 합치는 방식이 더 빠른 속력을 낸다.
POP함수(파이썬)
- pop(index) : 인덱스를 입력하면 리스트 안의 해당 인덱스에 있는 값을 빼주는 함수이다.
이때 리스트에 있는 값을 뺀 다음 빈 공간을 앞당겨서 자동으로 정렬해준다.
시간복잡도 : O(n)
메인함수(파이썬)
if __name__ == "__main__":
클래스 형식
class 이름():
def __init__(self):
self.queue=[]
insert(index , number)
- index번째에 number라는 값을 입력
- 시간복잡도 : O(N)
딕셔너리 사용법
선언
- dic={}
추가
- dic[“추가하고싶은 key”] = 추가하고싶은 value
추가하고싶은 key 또는 value가 문자이면 “”을 사용 숫자이면 그냥 입력
딕셔너리 안에서 값을 변경하고싶을때
만약 value를 바꾸고싶으면(더하거나 빼는것도 등호로 가능)
dic[“바꾸고싶은 value의 key값”] = “바꾸고싶은 value”
get() 함수
- dic.get(‘key’) 하면 value값이 나옴
value가 없다면 none값이 나옴
만약 key값이 있는지 없는지 확인하고 싶을때 dic.get(‘key’)를 해서 none이면 없으니 추가하면 될듯
print(*리스트) 하면 띄어쓰기가 된 채로 리스트가 출력([]는 없어짐)
여러줄을 입력받는데 몇줄을 입력받는지 기준이 없는 문제를 받았을때 입력을 어떻게 해야될까?
while(1):
sen=sys.stdin.readline().rstrip('\n')
if(len(sen)==0):
break
먼저 한줄씩 입력받는다 생각한다.
readline으로 입력받는다면 엔터또한 리스트에 입력이 된다.
rstrip()을 통해 엔터를 지워준다.
그러면 온전한 한줄이 되어 이것을 가지고 문제를 해결해준다
마지막에 아무것도 입력이 안된후 엔터를 치면 rstrip에 의해 아무것도 입력되지않은
리스트가 만들어지는데 이때 len함수를 이용하여 아무것도 없는 함수가 나왔다는 것을 말해주고 break를 통해 반복문을 탈출하면된다.
문자열을 리스트로 나누기 : split(‘’)
리스트의 문자를 문자열 합치기 : “사이에 넣고싶은 문자”.join()
리스트로 만들어주는 list함수는 문자형은 리스트로 만들어주지만 정수형은 리스트로 만들어주지 않는다
프로그램 종료시키는 메소드
import sys
sys.exit()
함수간 인자
함수에 사용되는 리스트는 서로 다른 함수에서 공통으로 사용될수 있다.(변수는 불가)
다른 함수에서 변경된 리스트의 값은 원래있던 함수에서도 변경됨!