알고리즘 개인공부(Python)
- 입력 개수가 주어지지 않을때- try except 처리로 해결
while True:
try:
n = int(input())
print(d[n])
except:
break
- 출력형식이 잘못되었습니다. - 불필요한 공백 출력시 눈에 띄지는 않지만 에러가 출력됨.
for i in range(a):
for j in range(a):
print(matrix[i][j], end = ' ')
if i != a-1:
print() ## print(' ') 로 해서 "출력형식이 잘못되었슫니다" 계속 뜸
- 시간초과 - input() 대신 sys.stdin.readline()
- Sort 함수 - key, reverse를 활용
def solution(numbers):
numbers = [str(x) for x in numbers]
numbers.sort(key = lambda x: (x*4)[:4],reverse=True) ## 리스트 값을 4번 반복한후 4번째 자리까지 가장 큰수를 추출
if numbers[0] == '0':
answer = 0
else:
answer = ''.join(numbers)
return answer
- Count 함수 - collections의 Count함수를 활용하여 리스트내 원소들의 개수를 편하게 추출
from collections import Counter
my_list = [1,2,3,4,4,4]
Counter(my_list)[4] # 원소 4의 개수 3이 출력됨
- List comprehension 으로 복잡한 for 을 간략화, 딕셔너리 생성 가능. zip으로 두개 이상의 리스트를 각 원소별로 작업 가능
specs = [['yunsik','100'],['choi','200']]
spec_dict = {key : int(value) for key, value in specs}
list1 = [1,2,3]
list2 = [4,5,6]
print([x + y for x, y in zip(list1, list2)]) # [5, 7, 9]
- Nested List 에서 작업하기
# unlist in python
nested_list = [['a','b','c'],['d','e','f','g']]
unnested_list = [y for x in nested_list for y in x] ## ['a', 'b', 'c', 'd', 'e', 'f', 'g']
# sum of the list
nested_int = [[1,2,3],[4,5,6]]
total_sum = sum(map(sum,nested_int))
- String 출력 - format을 쓰는게 깔끔
for i in range(len(matrix)-1):
answer = do(matrix[i])
print("Case {}: {}".format(i+1,answer)) ## format
- 2차원 리스트 90도 회전
ex ) 프로그래머스_자물쇠와 열쇠
def rotate_a_matrix_by_90_degree(a):
n = len(a) # 행 길이 계산
m = len(a[0]) # 열 길이 계산
result = [[0] * n for _ in range(m)] ## 결과 리스트
for i in range(n):
for j in range(m):
result[j][n-i-1] = a[i][j]
return result