항해99/02_알고리즘(Day5~18)

항해02_알고리즘(Day13)

딩디링동 2021. 6. 20. 02:24

오늘 한 일

  • 스터디에서 알고리즘 마라톤 문제 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장 '프로그램의 구조를 쌓는다! 제어문'을 본다. 아직 많이 삐그덕대는 내 제어문 구현에 많은 도움이 되길.