입력받은 리스트의 길이 citations부터 0까지 반복문을 실행한다.citations의 요소 number와 h를 비교해 number가 h 이상일 때 count를 1 증가시킨다. 만약 count가 h 이상이면 h를 반환한다. 반복문이 모두 종료되어도 반환되는 값이 없으면 0을 반환한다.문제풀이def solution(citations): for h in range(len(citations), 0, -1): count = 0 for number in citations: if number >= h: count += 1 if count >= h: return h return 0
enumerate()를 사용해 각 작업의 대기순서를 설정하고 pop(0)을 사용해 가장 앞의 문서를 꺼내고 비교한다.현재 i의 중요도가 가장 높고 대기순서가 location과 같을 때는 mx - len(importance)를 반환한다.i의 중요도가 가장 큰 값이 아닐 때는 append()를 사용해 맨 뒤로 보낸다.i의 중요도가 가장 크나 대기순서가 location과 같지 않을 때는 중요도를 비교할 priorities에서 제일 큰 값을 빼낸다.문제풀이def solution(priorities, location): importance = [] mx = len(priorities) for e,p in enumerate(priorities): importance.append((p,e)) while True: i..
답을 반환할 ans와 막대기의 개수를 저장할 stick을 생성한다. 다음으로 레이저를 체크할 용도인 flag를 생성한다. 기본값은 False이다.입력받은 arrangement를 반복문으로 돌려 "("일 때는 stick에 1을 더하고 flag를 True로 전환한다.")"일 때는 flag의 값에 따라 실행한다. flag가 True면 레이저이기 때문에 stick에서 1을 빼고 ans에 stick의 값을 더한다. 그리고 flag를 False로 전환한다.flag가 False일때는 쇠막대기의 끝임을 나타내기 때문에 stick에서 1을 빼고 ans에 1을 더한다.문제풀이def solution(arrangement): ans, stick = 0, 0 flag = False for a in arrangement: if ..
입력받은 plays와 genres를 튜플 형태로 변환해 ipt에 저장한다.collections.Counter()를 사용해 장르별로 실행된 횟수를 저장한다.많이 재생된 장르 순서대로 plays와 genres를 튜플 형태로 저장한 st를 생성한다.st는 plays를 기준으로 해 내림차순으로 정렬하고 최대 2개까지 lst에 저장한다.lst에 저장된 튜플 값을 순서대로 ipt에서 찾아 위치값을 ans에 저장한다. 이미 ans에 위치값이 존재할 때는 그 위치값에서 1을 더해 다시 찾아 저장한다. 문제풀이 import collections from operator import itemgetter def solution(genres, plays): ipt = [i for i in zip(plays,genres)] g..
N(x)일 때 정사각형의 한 변의 길이는 피보나치 수열을 통해 구할 수 있다.테스트 케이스를 잘 살펴보면 N개의 타일로 구성된 직사각형의 둘레는 N(x + 2) * 2로 구할 수 있다는 것도 확인할 수 있다.문제풀이 def solution(N): lst = [1,1,2] for rpt in range(3, N + 2): lst.append(lst[rpt - 1] + lst[rpt - 2]) return lst[N + 1] * 2
완주하지 못한 선수에서 사용한 collections.Counter로 의상의 종류에 속하는 원소의 개수를 딕셔너리 형태로 저장한다.의상의 종류가 겉옷, 상의, 하의가 있을 때 경우의 수를 구하는 공식은 (겉옷의 개수) * (상의의 개수) * (하의의 개수)이다.그러나 이 공식은 각각의 옷을 최소 1개씩 입었을 상황이기 때문에 입지 않았을 때의 상황도 고려해 각각 1을 더하여 곱한다.그러면 아무것도 입지 않는 경우의 수도 생긴다. 하지만 스파이는 최소 한 개의 의상을 입기 때문에 1을 빼 반환한다.문제풀이import collections def solution(clothes): ans = 1 lst = collections.Counter([x for i,x in clothes]) for i in lst: a..
입력받은 리스트를 문자열의 길이가 짧은 순으로 정렬한다. 그 리스트의 맨 뒤부터 startswith을 사용하여 그 값을 제외한 다른 문자열이 접두어로 있는지 검사하고 리스트에 저장한다.그리고 any를 사용하여 검사해 하나라도 참이 있으면 False를 반환하고, 검사가 다 끝나면 True를 반환한다. 문제풀이def solution(phone_book): phone_book = sorted(phone_book, key=len) for rpt in phone_book: if any([phone_book[-1].startswith(x) for x in phone_book[0:-1]]): return False return True
collections.Counter를 사용해 문제를 해결했다. collections.Counter는 리스트나 튜플 등 어떤 집합에서의 원소의 개수를 딕셔너리 형태의 Counter 객체로 반환한다.Counter 객체는 다양한 사칙연산을 지원한다. 예제 >>> c = Counter(a=3, b=1)>>> d = Counter(a=1, b=2)>>> c + d Counter({'a': 4, 'b': 3})>>> c - d Counter({'a': 2})>>> c & d Counter({'a': 1, 'b': 1})>>> c | d Counter({'a': 3, 'b': 2})출처 : https://docs.python.org 먼저 collections.Counter를 사용해 원소의 개수를 센다. 그리고 par..