🤯 코딩테스트/Python

Python 문법 및 기초프로그래밍

kangkibong 2024. 1. 18. 14:11

입력

type에 따른 입력값을 변수에 할당하기

사용자로부터 입력받는 값의 자료형은 String형이다.

이 점을 유의하여 원하는 값으로 형변환하여 할당한다.

str_given = input() # 문자열
int_given = int(input()) # 정수
float_given = float(input()) # 실수

 

separator를 기준으로 입력값의 배열 생성하기

split() 내장함수는 문자열을 separator를 기준으로 배열을 반환한다.

parameter로 문자열 형태의 separator를 넘기면 이를 기준으로 입력값의 각 원소를 분할하여 배열을 반환해준다.

split1 = input().split() # 공백을 기준으로 element 배열 생성
split2 = input().split(":") # ":"를 기준으로 element 배열 생성
split3 = list(map(int, input().split())) # 공백을 기준으로 정수값의 배열 생성
split4 = [input().split() for _ in range(3)] # 3번 공백을 기준으로 입력받고 배열을 생성
split5 = [list(map(int, input().split())) for _ in range(4)]
# 하나의 배열에 공백으로 입력받은 int값들의 배열을 4개 추가한 2중 배열을 list comprehension으로 받을 수 있다.

 

각 변수에 공백을 기준으로 입력값을 할당하기

a, b = tuple(input().split()) # 공백을 기준으로 각 입력을 a, b에 할당
a, b = tuple(map(int, input().split())) # 공백을 기준으로 정수값을 a, b에 할당

 

 

출력

print()

print() 내장함수를 통해 출력이 가능하다.

default로 자동 줄바꿈(\n)이 적용되어 있으므로 end 옵션을 통해 출력 마지막을 값 설정이 가능하다.

print("Hello World", end=" ") # 자동 줄바꿈(\\n) 해제하고 원하는 문자열을 기준으로 출력

 

f-string으로 문자열 포맷팅하기

파이썬 버전 3.6 부터 사용할 수 있는 기능으로 변수에 해당하는 값을 보다 직관적이고 간편하게 출력이 가능하다.

a, b = 1, 2 # 정수
c = 3.141592 # 실수

print(f"{a} + {b} = {a + b}") # "1 + 2 = 3"
print(f"{c:.3f}") # 3.142 (셋째 자리에서 반올림)

 

 

배열

배열 내장함수

  • sum(): 원소의 합을 반환한다.
  • max(): 원소 중에서 가장 큰 값을 반환한다. 
  • min(): 원소 중에서 가장 작은 값을 반환한다. 
  • len(): 배열의 길이를 반환한다.
  • median(): statistics 라이브러리에 있는 median() 함수를 통해 오름차순을 기준으로 중앙값을 반환한다.
import statistics as st
arr = [1, 2, 3]

sum(arr) # 합 => 6
max(arr) # 최대값 => 3
min(arr) # 최소값 => 1
len(arr) # 배열의 길이 => 3
st.median(arr) # 오름차순 기준 중앙값 => 2

 

배열 함수

  • append(element): 배열 뒤에 element를 추가한다.
  • pop(index): index에 해당하는 원소를 제거한다. index를 넘기지 않으면 가장 뒤에 원소값을 제거한다.
arr = [1, 2, 3]

arr.append(4) # arr = [1, 2, 3, 4]
arr.pop() # arr = [1, 2, 3]

 

slicing

특정 index를 통해 arr[start:end:step] 기준으로 배열을 slicing할 수 있다.

arr = [1, 2, 3, 4, 5]

arr[::-1] # [5, 4, 3, 2, 1] reversed_arr
arr[:3] # [1, 2] 
arr[3:] # [4, 5]
arr[-1] # 5, 마지막 원소

 

counting 배열

0으로 초기화된 배열을 생성하여 특정 배열의 원소에 해당하는 index에 접근하여 counting 할 수 있다.

count_arr = [0] * 7

arr = list(map(int, input().split()))

## 개수 세기
for elem in arr:
	count_arr[elem] += 1

 

탐색

  • String in Array : 특정 문자열이 배열에 있는지 boolean을 반환한다.
  • String not in Array : 특정 문자열이 배열에 없는지 boolean을 반환한다.
  • Array.index(String) : 문자열이 배열에 몇 번째에 있는지 가장 첫번째 index를 반환한다. 없을 경우 ValueError가 발생한다.
  • Array.count(String) : String이 배열에 몇개 있는지 반환한다.
word = ['A', 'P', 'P', 'L', 'E']

print('L' in word) # True
print('L' in word) # False
print(word.index('P')) # 1
print(word.count('P')) # 2

 

2차원 배열 원하는 방향 순회하기

오른쪽으로 탐색하기

arr = [[1,2,3,4],[5,6,7,8]]

for y in range(2):
	for x in range(4):
		print(arr[y][x], end=" ")
	print() #[[1, 2, 3, 5], [5, 6, 7, 8]]

 

아래쪽으로 탐색하기

arr = [[1,2,3,4],[5,6,7,8]]

for x in range(4):
	for y in range(2):
		print(arr[y][x], end=" ")
	print() # [[1, 5], [2, 6], [3, 7], [4, 8]]

 

거꾸로 탐색하기

arr = [[1,2,3,4],[5,6,7,8]]

for y in range(2):
	for x in range(4-1,-1,-1):
		print(arr[y][x], end=" ")
	print() # [[4, 3, 2, 1], [8, 7, 6, 5]]

 

 

문자열

대문자, 소문자 변환 및 판단하기

# 대문자, 소문자 변환
str = 'a'
str.upper() # 'A'
str.lower() # 'a'

# 대문자, 소문자 판단
str = 'a'
str.isupper() # False
str.islower() # True

 

separator를 기준으로 배열을 문자열로 합치기

given_input = "Hello Python"
''.join(given_input.split()) # 공백을 기준으로 배열에 담고 이를 다시 공백 없이 join으로 합친다. => HelloPython

 

특정 문자 위치 찾기

# 문자열에 특정 문자 위치 찾기(index(), find())
# index()
str = 'abcde'
str.index('f') # ValueError 발생 때문에 in 키워드로 해당 문자가 있는지 먼저 판단하고 index를 사용해야한다.
if('f' in str):
	str.index('f')
else:
	print('Error!')

# find() 있으면 index, 없으면 -1
print(str.find('f')) # -1
print(str.find('b')) # 1

 

특정 문자 변경하기

# 문자열에서 특정 문자열 변경
# 문자열은 immutable 즉, 변할 수 없으므로 list로 변경하여 값을 재할당하고 다시 join한다.
str = 'abcde'
arr = list(str)
arr[2] = 'b'
print("".join(arr)) # abbde

 

문자 제거하기

# 문자열내 문자제거
str = 'abcde'
arr = list(str)
arr.pop(2)
print(arr) # ['a','b','d','e']

 

문자와 아스키코드 서로 변환하기

# 문자 => 아스키코드
print(ord('A')) # 65
# 아스키코드 => 문자
print(chr(65)) # 'A'

 

숫자, 문자 판별하기

str = 'abc'
print(str.isalpha()) # True
numbers = '12345'
print(number.isdigit()) # True