해시란 무엇인가?
https://siyoon210.tistory.com/85
데이터를 다루는 기법 중에 하나
배열 비교할 때 사용
데이터 정리 (중복제거 등)
a.sort(): 정렬 default(내림차순)
sorted(a): 원래 리스트를 건들지 않고 새로운 리스트로 반환
set(a): 중복제거
len(a): 배열 길이
zip(a, b, c):각 배열에 요소를 짝을 지어주는것
ex. ([[a[0],b[0],c[0]],[a[1],b[1],c[1]])
a.startswith(b):a가 b와 같다면 return값으로 거짓이나 참을 반환
Collection : 데이터 처리를 위한 유용한 객체가 많이 모듈
ex. counter
https://school.programmers.co.kr/learn/courses/30/lessons/42576
문제 : 완주하지 못한 선수 (없는애 찾기)
import collections
def solution(p, c):
p.sort()
c.sort()
result = collections.Counter(p) - collections.Counter(c)
return list(result)[0]
문제 : 폰켓몬 (더 작은수 찾기 2분의1, 중복제거)
https://school.programmers.co.kr/learn/courses/30/lessons/1845
def solution(nums):
answer=0
leng=len(set(nums))
result=int(len(nums)/2)
if result > leng:
answer = leng
else :
answer = result
return answer
다른 풀이
def solution(ls):
return min(len(ls)/2, len(set(ls)))
문제 : 전화번호 (교집합찾기?)
https://school.programmers.co.kr/learn/courses/30/lessons/42577
def solution(phone_book):
answer = True
phone_book.sort()
for i in range(len(phone_book)-1):
if len(phone_book[i]) < len(phone_book[i+1]):
if phone_book[i + 1][:len(phone_book[i])] == phone_book[i]:
answer = False
break
return answer
다른 풀이
def solution(phoneBook):
phoneBook = sorted(phoneBook)
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
문제 : 위장 (조합구하는 식)
https://school.programmers.co.kr/learn/courses/30/lessons/42578?language=python3
def solution(clothes):
hash_map = {}
for clothes, type in clothes:
hash_map[type] = hash_map.get(type, 0) + 1
answer = 1
for type in hash_map:
answer *= (hash_map[type] + 1)
return answer - 1
다른 풀이
from collections import Counter
from functools import reduce
def solution(clothes):
cnt = Counter([kind for name, kind in clothes])
answer = reduce(lambda x, y: x*(y+1), cnt.values(), 1) - 1
return answer
reduce(집계 함수, 순회 가능한 데이터[, 초기값])
lambda 매개변수 : 표현식, 들어갈 변수x, y
ex. (lambda x,y: x + y)(10, 20) = 30
https://school.programmers.co.kr/learn/courses/30/lessons/42579
문제 : 베스트 앨범