KEEP GOING
[python] 코딩 테스트 준비 kit 본문
목차
1. range
n = 5
# 0부터 n-1까지
for i in range(n):
print(i, end=' ')
# n-1부터 0까지
for i in reversed(range(n)):
print(i, end=' ')
2. 동 남 서 북
# 동 남 서 북
dx = [0,1,0,-1]
dy = [1,0,-1,0]
def turn(position):
if position == 3:
return 0
return position+1
2-1) 사용 예제 - 달팽이 숫자
# 동 남 서 북
dx = [0,1,0,-1]
dy = [1,0,-1,0]
def turn(position):
if position == 3:
return 0
return position+1
n = 3
board = [[0]*n for _ in range(n)]
x,y = 0,0
p = 0
board[x][y] = 1
for i in range(2, n**2+1):
nx = x + dx[p]
ny = y + dy[p]
if nx < 0 or nx >= n or ny < 0 or ny >= n or board[nx][ny] != 0:
p = turn(p)
nx = x + dx[p]
ny = y + dy[p]
board[nx][ny] = i
x = nx
y = ny
for i in range(n):
print(board[i])
3. set
- 원소의 중복을 제거해줌
lst = [1,5,5,4,7,5,8]
# 중복 제거
print(set(lst))
print(list(set(lst)))
lst = [(1,2),(1,2),(1,2),(1,8),(7,2)]
# 중복 제거
print(set(lst))
print(list(set(lst)))
arr= [1,2,3,4,5]
arr = set(arr)
# 이미 존재하는 원소여서 추가 x
arr.add(5)
print(arr)
# 추가 가능
arr.add(10)
print(arr)
4. DFS
def dfs(x, y):
d = [(1,0),(0,1),(-1,0),(0,-1)]
visited[x][y] = True
for dx, dy in d:
nx = x + dx
ny = y + dy
if 0 <= nx < n and 0 <= ny < n:
if not visited[nx][ny]:
board[nx][ny] = board[x][y] + 1
n = 4
board = [[1]*n for _ in range(n)]
visited = [[False]*n for _ in range(n)]
for i in range(n):
for j in range(n):
if not visited[i][j]:
dfs(i, j)
for i in range(n):
print(board[i])
5. 리스트 뒤에서부터 접근
arr = [1,2,3,4,5]
n = len(arr)
# range 범위로 인덱스 접근
for i in reversed(range(n)):
print(i, end=' ')
print()
# 배열을 거꾸로 뒤집어 인덱스 접근 : 내장함수 사용
for data in reversed(arr):
print(arr.index(data), end=' ')
print()
# 배열을 거꾸로 뒤집어 인덱스 접근 : slicing 사용
for data in arr[::-1]:
print(arr.index(data), end=' ')
6. find, index
s = 'Happy new year'
print(s.find('H')) #0
print(s.index('H')) #0
print(s.find('T')) #-1
print(s.index('T')) #ValueError
find()
- 찾는 문자가 없는 경우 -1 리턴
- 리스트, 튜플, 딕셔너리 자료형에서는 사용 불가. 사용시 Attribute Error 발생
- 오직 문자열에서만 사용 가능
index()
- 찾는 문자가 없는 경우 Value Error 발생
- 리스트, 튜플, 딕셔너리 자료형에서는 사용 불가. 사용시 Attribute Error 발생
- 문자열, 리스트, 튜플 자료형에서 사용 가능
- 딕셔너리에서는 사용 불가. 사용시 Attribute Error 발생
9. dictionary value 가져오기 (get)
dic = {'a':1, 'b':2, 'c':3}
print(dic.get('a'))
print(dic.get('d'))
print(dic.get('d', 0)) # 'd'가 없는 경우 0 리턴
print(dic)
- 딕셔너리.get(키) : key에 대한 value 리턴
딕셔너리에 해당 key가 없는 경우 None 리턴
- 딕셔너리.get(키, 0) : 딕셔너리에 조회할 key가 없는 경우 None이 아닌 '0' 리턴
(딕셔너리에 해당 키가 추가되는 것은 아님!! None을 0으로 대체해줄 뿐)
10. dictionary key 삭제하기 (del, pop)
dic = {'a':1, 'b':2, 'c':3}
del dic['a']
print('del \'a\' =>', dic)
del dic['d'] # KeyError
- del 딕셔너리[키] : del은 키워드. 딕셔너리에서 key 제거
딕셔너리에 해당 key가 없는 경우 KeyError 발생
dic = {'a':1, 'b':2, 'c':3}
print(dic.pop('a'))
print(dic.pop('d', '없음'))
print(dic.pop('d'))
- 딕셔너리.pop(키) : key 삭제와 동시에 대응하는 value 리턴
딕셔너리에 key가 없는 경우 KeyError 발생
- 딕셔너리.pop(키, 0) : 딕셔너리에 삭제할 key가 없는 경우, KeyError 아닌 '0' 리턴
11. dictionary 순회하기 (for)
dic = {'신희선': 150, '조현하': 180, '정하연': 130}
for key in dic: # key로만 순회하기
print(key, dic[key])
print('******************')
for key, value in dic.items(): # key-value 동시 순회하기
print(key, value)
12. 원소의 개수 세기
- collections 모듈의 Counter 클래스 사용
from collections import Counter
arr = [5,1,5,21,5,15,7,7,7,1,5]
dic = Counter(arr)
print(dic)
'python' 카테고리의 다른 글
[python] 로깅(logging) 라이브러리 사용법(setLevel, fileHandler, StreamHandler) (0) | 2022.10.13 |
---|---|
[python] Jupyter 단축키 모음 (0) | 2022.09.28 |
[python] 소수 n째 자리까지 출력하기 (round(), %, format(), f-string) (1) | 2022.01.27 |
[python] 딕셔너리 defaultdict 사용 방법 (0) | 2021.12.29 |
[python] 코딩테스트 시간 초과 해결 방법 (0) | 2021.08.09 |