프로그래머스(파이썬)/LV.1(파이썬)

    과일장수 →특정요소 여러 개 제거★★+ 1차원 리스트 슬라이싱(n등분)★★

    나의 풀이 def solution(k, m, score): #내림차순으로 정렬 score.sort(reverse=True) #score에서 최대 점수 보다 큰 점수를 담기위한 remove Set remove_set =set() for i in score: if i > k: #최대점수 remove_set.add(i) #특정요소를 제거한 score 리스트 score = [i for i in score if i not in remove_set] sum=0 #1차원 리스트를 m개씩 슬라이싱한다. for i in range(0, len(score), m): new_box=score[i:i+m] if len(new_box)==m: sum+=min(new_box)*m return sum 다른 사람의 풀이 def so..

    가장 가까운 글자→ 다중 index를 이용★★

    나의 풀이 def solution(s): str=list(s) result=[-1,] for i in range(2, len(str)+1): new_str = str[:i] last=new_str[-1] rest_list = list(filter(lambda x: new_str[x] == last, range(len(new_str)))) if len(rest_list) ==1: result.append(-1) else: result.append(rest_list[-1]-rest_list[-2]) # print(result) return result 다른 사람의 풀이 def solution(s): answer = [] for i in range(len(s)): #i는 큰 idx = -1 for j in r..

    완주하지 못한 선수→ Hash 또는 Counter함수

    다른 사람의 풀이1(해시를 이용하는경우) def solution(participant, completion): hashDict = {} sumHash =0 #1. participant list의 hash를 구하고, hash값을 더한다. for part in participant: hashDict[hash(part)]=part sumHash +=hash(part) #2. completion list의 hash를 빼준다. for comp in completion: hashDict[hash(comp)]=comp sumHash =hash(comp) #3.남은 값은 완주하지 못한 선수의 hash값이 된다. return hashDict[sumHash] ▶ 참가 선수들의 각 Hash값을 전부 더하고, 완주한 선수들의..

    다트 게임→ 정규식, findall(), recompile() + 스택을 표방한 리스트

    다른 사람의 풀이 1 import re def solution(dartResult): bonus = {'S' : 1, 'D' : 2, 'T' : 3} option = {'' : 1, '*' : 2, '#' : -1} # \d는 숫자를 의미, [a-zA-Z]는 알파벳을 의미, ([*|#]?)는 특수 문자를 의미한다. #'?'가 Quantifier 중의 하나인데, # 0이나 1을 나타내는 연산자이다. 해당 특수문자가 없는 경우 ""을 반환하고, 해당 특수문자가 있으면 한 개만 있을 때만 돌려달라는 의미 # 괄호 1개가 튜플의 1개의 요소가 된다. # 즉 p1은 소괄호가 2개이므로 요소가 2개가 나오고, p2는 소괄호가 3개 이므로 요소가 3개가 나온다. p = re.compile('(\d+)+([SDT])+..