프로그래머스(파이썬)

    폰켓몬★★ → 해설, 조합X

    나의 풀이 def solution(nums): choice_cnt = int(len(nums)//2) kind_cnt = len(set(nums)) if choice_cnt > kind_cnt: return kind_cnt else: return choice_cnt ▶ ex1) nums=[1,2,3,4,5,5,5,5] 라면 전체 포켓몬의 종류의 수(kind_cnt)는 [1,2,3,4,5] =>총 5종류가 된다. ▶ choice_cnt=len(nums)//2=총 마리수//2) ▶ 하지만 최대 가져갈 수 있는 포켓몬은 최대 8마리 중 절반인 4마리(choice_cnt) 이므로 결국엔 4종류 밖에 선택이 안된다. 따라서 4를 return해야 한다. (kindcnt>choicecnt) ▶ ex2) nums=[1..

    키패드 누르기→매개변수로 값주기, 현재값, next값★

    나의 풀이 def solution(numbers, hand): # 1. 왼손 오른손 위치를 초기화 left_key= [1,4,7] right_key= [3,6,9] hand_position=['*', '#'] keyPad = { 1:(0,0), 2:(0,1), 3:(0,2), 4:(1,0), 5:(1,1), 6:(1,2), 7:(2,0), 8:(2,1), 9:(2,2), '*':(3,0), 0:(3,1), '#':(3,2) } # 2. 숫자를 누를 손가락 정하기 answer="" for num in numbers: if num in left_key: hand_position[0]=num answer+="L" elif num in right_key: hand_position[1]=num answer+="R..

    숫자 짝꿍 → 일치 + count() + min(a,b) + len(answer) == a.count('0')★★ + 모든 요소가 0인 경우

    나의 풀이 def solution(X, Y): answer = [] for i in range(10): num=min(X.count(str(i)), Y.count(str(i))) answer.append(num) result =[] for j in range(10): if answer[j] != 0: for _ in range(answer[j]): result.append(str(j)) result.sort(reverse=True) #result에 요소 자체가 없는 경우 if len(result) ==0: return "-1" #result의 모든 요소가 '0'인 경우 elif len(result) == result.count('0'): return '0' return "".join(result) ▶ 모..

    과일장수 →특정요소 여러 개 제거★★+ 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..