들어가며
코딩테스트 초보자에게 가장 큰 난관이라고 한다면 바로 '기초 문법'일 것이다. 코딩테스트에 입문한 지 얼마 안 됐거나 다른 언어로 코딩테스트를 공부했던 사람이라면 기초 문법은 고사하고 입력값 받는 것부터 막막한 경우가 많다.
이번 글에서는 파이썬의 기초 문법 및 입력값을 받는 방법 등을 정리하여 위와 같은 고민을 갖고 있는 사람에게 도움을 주고자 한다. 본 글의 내용은 자주 쓰이는 기초적인 내용만 다루었으니 혹시 없는 내용이 있다면 그때그때마다 검색해서 학습한 뒤 잘 각자 정리해두도록 하자.
입력값
입력값 배열로 받기
listInt = list(map(int, input().split())) # [1, 2, 3, 4 ,5]
여러 숫자 한꺼번에 받기num1, num2, num3 = map(int, input().split()) # num1 = 1, num2 = 2, num3 = 3
처리 속도 빠른 입력import sys fasterInput = sys.stdin.readline().rstrip()
리스트
리스트 관련 기본 문법
listA = [1, 3, 2]
append() - 리스트 맨 끝에 요소 추가
listA.append(4) print("append()", listA) # append() [1, 3, 2, 4]
sort() - 오름차순, 내림차순 정렬 가능listA.sort() print("sort()", listA) # [1, 2, 3, 4] listA.sort(reverse=True) print("sort(reverse=True)", listA) # [4, 3, 2, 1]
insert(index, element) - 특정 위치에 원소 삽입listA.insert(0, 100) print("insert(0, 100)", listA) # [100, 4, 3, 2, 1] listA.insert(-1, 100) print("insert(-1, 100)", listA) # [100, 4, 3, 2, 100, 1]
count() - 특정 원소 개수 세기cnt100 = listA.count(100) print("count(100)", cnt100) # 2
remove() - 특정 원소 제거. 특정 원소가 여러 개 존재할 시 가장 첫 번째 요소만 제거listA.remove(100) print("remove(100)", listA) # [4, 3, 2, 100, 1]
리스트에서 여러 원소들을 제거하는 방법listB = [1, 2, 3, 3, 4, 5, 6, 5] remove_set = {3, 5} removed35 = [i for i in listB if i not in remove_set] print("removed35", removed35) # [1, 2, 4, 6]
빈 리스트 선언a = list() # OR a = []
크기가 N이고 모든 값이 0인 1차원 리스트 만들기n = 10 a = [0] * n # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
리스트의 인덱싱과 슬라이싱
아래 예시들에서 사용될 리스트는 list = [1, 2, 3, 4, 5, 6, 7, 8, 9] 라고 하자.
<인덱싱>
뒤에서 n 번째 원소 출력
# list[n] front = list[0] print(front) # 1 back = list[-1] print(back) # 9
n 번째 원소 변경
# list[n] = 변경할 값 list[3] = 7 print(list) # [1, 2, 3, 7, 5, 6, 7, 8, 9]
<슬라이싱>
n 번째부터 m 번째 원소 구하기
# list[n : m] slicedList = list[1 : 4] # 1번 인덱스부터 4 - 1번 인덱스에 해당하는 값들이 출력됨 print(slicedList) # [2, 3, 4]
리스트 컴프리헨션
조건문과 반복문을 한 줄로 작성하여 간편하게 리스트를 초기화할 수 있다.
0부터 19까지 수 중에서 홀수만 포함하는 리스트
list = [i for i in range(20) if i % 2 == 1] print(list) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
1부터 9까지 수의 제곱 값을 포함하는 리스트list = [i * i for i in range(1, 10)] print(list) # [1, 4, 9, 16, 25, 36, 49, 64, 81]
n * m 크기의 2차원 리스트n = 3 m = 4 list = [[0] * m for _ in range(n)] print(list) # [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
문자열
문자열과 변수 더하기
varInStr = 10 print("정답은 " + str(varInStr) + "입니다.") # 정답은 10입니다. print("정답은", str(varInStr), "입니다.") # 정답은 10 입니다. print(f"정답은 {varInStr}입니다.") # 정답은 10입니다.
문자열 여러 번 더하기multiStr = "multipleStr!" print("multiStr * 3", multiStr * 3) # multipleStr!multipleStr!multipleStr!
사전 자료형
기본 선언법
dict = dict() dict["사과"] = "Apple" dict["바나나"] = "Banana" dict["코코넛"] = "Coconut"
키 데이터만 담은 리스트keys = dict.keys() print("keys", keys) # dict_keys(['사과', '바나나', '코코넛'])
값 데이터만 담은 리스트values = dict.values() print("values", values) # dict_values(['Apple', 'Banana', 'Coconut'])
리스트 내 값들을 하니씩 출력for key in keys: print("key", key) print("val", dict[key]) # key 사과 # val Apple # key 바나나 # val Banana # key 코코넛 # val Coconut
집합 자료형
집합 자료형을 활용하여 리스트 내 중복값 제거하기
setList = [1, 1, 2, 3, 4, 4, 5] setted = set(setList) print("setted", setted) # {1, 2, 3, 4, 5} setttedList = list(set(setList)) print("setttedList", setttedList) # [1, 2, 3, 4, 5]
집합 자료형의 연산set1 = set([1, 2, 3, 4, 5]) set2 = set([3, 4, 5, 6, 7]) # 합집합 print("set 합집합", set1 | set2) # {1, 2, 3, 4, 5, 6, 7} # 교집합 print("set 교집합", set1 & set2) # {3, 4, 5} # 차집합 print("set 차집합", set1 - set2) # {1, 2}
원소 추가 및 제거# 새로운 원소 하나 추가 set2.add(8) print("set.add(8)", set2) # {3, 4, 5, 6, 7, 8} # 새로운 원소 여러 개 추가 set2.update([9, 0]) print("set.update([9, 0])", set2) # {0, 3, 4, 5, 6, 7, 8, 9} # 특정 원소 제거 set2.remove(3) print("set.remove(3)", set2) # {0, 4, 5, 6, 7, 8, 9}
'👩💻 Programming > Python' 카테고리의 다른 글
django with MySQL 게시글 CRUD 구현하기 (0) | 2022.06.03 |
---|---|
django with MySQL로 회원가입 및 로그인 기능 구현하기 (0) | 2022.06.03 |
django & mysql 연동하기 기본 설정 방법 (0) | 2022.06.01 |
댓글