본문 바로가기
알고리즘

[1주일 복습][파이썬]-14일차 복습

by Jyujae 2022. 6. 8.

1. 딕셔너리 사용/ from collections import defaultdict

https://blue-coding-story.tistory.com/52

defaultdic은 ()안에 지정해둔 '디폴트' 값으로 value를 지정하지 않은 키 값의 밸류를 채워주는 것이다

본래의 dictionary에서는 value 값 없이 key를 호출하면 오류가 뜨는데,

defaultdict은 굳이 필요 없는 값까지 for문으로 처리를 해주어야 하는 번거로움이 있어서, 이를 해결해줄 수 있다!

필요한 값들만 딕셔너리에서 골라 쓰고 싶을 때 사용해보자

-> https://dongdongfather.tistory.com/69

참조

 

2. set 형태

https://blue-coding-story.tistory.com/56

문제에서 중복된 경우의 수를 삭제해야되는 경우가 있을 때 set형태를 떠올리자(자주 쓰임)

set형태는 집합처럼 -를 통해 차집합처럼 사용가능

case가 숫자로 주어지는 경우 ex) players= [1,3,4,5] 1,3,4,5 player로 주어지고, index번호에 접근해야 할 때

-> for문을 index 자체로 접근하게 되면 out of index가 나오게 된다

--> for x in players:로 접근하고 각각의 인덱스를 찾을 때 x-1로 접근하면 0번 인덱스도 문제 없이 다룰 수 있다

 

https://blue-coding-story.tistory.com/59

같은 종류의 폰켓몬이기에, 종류를 구분하려는 문제 -> set으로 중복 삭제

-> 중복이 없기 때문에, len으로 접근하면 len = 종류의 수가 되고, 비교문을 편하게 돌릴 수 있었다

 

3. 딕셔너리

https://blue-coding-story.tistory.com/61

dic.itmes()

-> 딕셔너리 형태가 리스트 형태로 출력된다  ([('zero', 0), ('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5), ('six', 6), ('seven', 7), ('eight', 8), ('nine', 9)])

for x in dic.items():

x는 ('zero',0) 부터 시작된다 -> [0]번 [1번] 인덱스로 접근 가능

https://blue-coding-story.tistory.com/83

고유한 값이 각각 있고, 이 고유한 값에 딸린 것들이 변화하거나 딸린 값들로 무언가를 결정해야할 때, 딕셔너리 구조를 꼭 떠올리자!

4. lambda

https://blue-coding-story.tistory.com/62

lambda를 sorted에서 조건을 부여해서 사용한 문제가 많이 나왔다.

x=sorted(list or dic, key=lambda x: 기준으로 삼을 것, reverse~)

본 포스팅에서는 dictionary 구조였고, 각 값의 인덱스 기준으로 정렬할 때는 x:dic[x]로 접근

ex)

list=[ [1,10],[2,9],[3,8],[4,7] ]

x=sorted(list, key=lambda x: x[1])

-> [[4, 7], [3, 8], [2, 9], [1, 10]]

x=sorted(list, key=lambda x: x[0])

-> [[1, 10], [2, 9], [3, 8], [4, 7]]

 

5. 자잘한 기초 수학(멘붕 방지용)

0%1= 0이다

5%5=0이다

0에는 무슨 짓(+ - 말고)을 해도 0이다

 

6. zip

https://blue-coding-story.tistory.com/68

 

-> -> [(1, 'q'), (2, 'w'), (3, 'e'), (4, 'r')]

둘 중에 하나라도 값이 없으면 누락됩니다

 

7. str.isalnum():

https://blue-coding-story.tistory.com/73

 

-> 문자열이 알파벳([a-zA-Z])과 숫자([0-9])로만 구성되었는지 확인하는 파이썬 문자열 메소드

 

8. '문자' in 문자열

https://blue-coding-story.tistory.com/73

if 'a' in 'abcde':

    로 문자열 내의 원하는 문자 찝어내기 가능!

 

https://blue-coding-story.tistory.com/87

 

 

9. chr/ ord

https://blue-coding-story.tistory.com/75

chr() 숫자(코드) -> 문자열

ord() 문자 -> 숫자(코드)

 

10. 부르트포스 유형

모든 경우의 수를 따져주는 유형

포인트: for문의 range 설정, while문에서 원하는 조건만 뽑아내서 최종 조건에 맞으면 break으로 깨기

 

11. Counter, 집합에서의 & 와 |

https://blue-coding-story.tistory.com/84

 

dictionary 확장자 문법, 각 원소별로 몇번씩 나왔는지 key(원소)와 valule(갯수) 형태로 나타내줌

&은 교집합, | 은 합집합

각 문자열별로 몇번 나왔는지를 판단할 때 counter로 접근해보자

 

12. 데크,큐

- 큐

리스트 형태, 선입선출 형태 -> BFS에서 자주 쓰임

append, pop(index번호), del list[인덱스], list.remove(값) 등

 

-데큐

from collections import deque -> 시작점, 끝점의 값을 넣고 빼는데 최적화됨

a=deque() 로 지정 가능,

appendleft(), append(), popleft(), pop(), deque.remove(값)

 

13. enumerate

index와 원소에 동시에 접근할 수 있는 방법

for x in enumerate(['1','2','3']):

    print(x)

->

(0,'1')

(1.'2')

(2,'3')

 

-> 프로그래머스 프린터 문제(https://programmers.co.kr/learn/courses/30/lessons/42587)