오늘 한 일
- 스터디에서 알고리즘 마라톤 문제 5개를 풀었다. 전체적으로 다시 복습해 볼 충분한 시간을 갖기 위해 마음 같아서는 얼른얼른 끝내버리고 싶지만, 머리가 따라주지 않는다.
# 입력받은 여러 개의 수를 리스트에 넣기
x_list = [int(x) for x in input().split()]
# 자료형의 원소들을 n개씩 골라 리스트에 넣기
import itertools
a_list = list(map(''.join, itertools.permutations(iterable, n))) # 중복 허용
b_list = list(map(''.join, itertools.combinations(iterable, n))) # 중복 비허용
- <점프 투 파이썬> 2장 '파이썬 프로그래밍의 기초, 자료형'을 봤다. 분량은 꽤 되지만 대체로 아는 내용이라 부담 없이 책장을 넘길 수 있었다. 물론, '이걸 진작에 알았더라면 코드를 그렇게 복잡하게 짜는 불상사는 없었을 텐데' 하는 것들도 있었다. 다른 사람들에게는 기본 중의 기본이겠지만, 어쨌거나 나는 코알못이니까.
# 문자열 포매팅: 2개 이상의 값 넣기
>>> number = 10
>>> day = "three"
>>> "I ate %d apples. so I was sick for %s days." % (number, day)
# 또는, format 함수를 사용한 포매팅
>>> "I ate {0} apples. so I was sick for {1} days.".format(number, day)
# 결과는 같다. (하지만 난 f-string을 애용하겠지)
'I ate 10 apples. so I was sick for three days.'
# 문자열 삽입(join)
>>> ",".join('abcd')
'a,b,c,d'
>>> ",".join(['a', 'b', 'c', 'd'])
'a,b,c,d'
# 리스트 뒤집기(reverse): 역순 정렬 아님에 주의
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']
# 리스트에 포함된 요소 x의 개수 세기(count)
>>> a = [1, 2, 3, 1]
>>> a.count(1)
2
>>> a = {'name': 'pey', 'phone': '0119993323',
'birth': '1118'}
>>> a.keys() # 딕셔너리 key로 리스트 만들기
dict_keys(['name', 'phone', 'birth])
>>> a.values() # 딕셔너리 value로 리스트 만들기
dict_values(['pey', '0119993323', '1118'])
>>> a['name'] # 존재하지 않는 키에 대해서는 오류 발생
'pey'
>>> a.get('name') # 존재하지 않는 키에 대해서는 None을 반환
'pey'
>>> a.get('adress', 'moo') # 키 값이 없을 경우 미리 정한 디폴트 값 반환
'moo'
>>> s1 = set([1, 2, 3, 4, 5, 6])
>>> s2 = set([4, 5, 6, 7, 8, 9])
>>> s1 & s2 # 교집합 구하기
{4, 5, 6}
>>> s1.intersection(s2)
{4, 5, 6}
>>> s1 | s2 # 합집합 구하기
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1 - s2 # 차집합 구하기
{1, 2, 3}
>>> s1.difference(s2)
{1, 2, 3}
내일 할 일
- 일요일이니까 알고리즘 스터디와 알고리즘 마라톤은 잠시 쉬어간다! :)
- 지난 일주일 간 읽기 목록에 넣어 놓기만 하고 건드리지 못했던 자료들을 한 번씩 훑어본다.
- <점프 투 파이썬> 3장 '프로그램의 구조를 쌓는다! 제어문'을 본다. 아직 많이 삐그덕대는 내 제어문 구현에 많은 도움이 되길.