48. 체육복
2024. 7. 16. 19:43
프로그래머스/Lv. 1
유형 : 그리디풀이 시간 : 20분? 30분def solution(n, lost, reserve): answer = 0 check = [1 for i in range(n+1)] for r in reserve: check[r] += 1 for l in lost: check[l] -= 1 for i in range(1, len(check)): if i == len(check)-1 and check[i] == 0: if check[i-1] == 2: check[i-1] -= 1 check[i] += 1 elif check[i] == ..
47. 완주하지 못한 선수
2024. 7. 16. 19:29
프로그래머스/Lv. 1
유형 : 해시풀이 시간 : 10분def solution(participant, completion): pardict = dict() for par in participant: if par not in pardict: pardict[par] = 1 else: pardict[par] += 1 comdict = dict() for com in completion: if com not in comdict: comdict[com] = 1 else: comdict[com] += 1 for par in pardict.keys(): if par ..
46. 대충 만든 자판 (+enumerate)
2024. 7. 16. 19:08
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 10분 def solution(keymap, targets): answer = [] keydict = dict([]) for key in keymap: keylist = list(key) for i in range(len(keylist)): if keylist[i] not in keydict: keydict[keylist[i]] = i+1 else: if keydict[keylist[i]] > i+1: keydict[keylist[i]] = i+1 for target in targets: tl..
45. 둘만의 암호
2024. 7. 16. 18:59
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 15분 def solution(s, skip, index): answer = '' slist, skiplist = [ord(x) for x in list(s)], [ord(x) for x in list(skip)] a = ord('a') for i in range(len(slist)): newi = slist[i] cnt = 0 while True: newi = (newi + 1 - a) % 26 + a if newi not in skiplist: cnt += 1 if cnt == index: b..
44. 로또의 최고 순위와 최저 순위
2024. 7. 16. 18:29
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 한.. 10분? def solution(lottos, win_nums): answer = [] rankset = dict([[6-i, i+1] for i in range(5)]) rankset[0], rankset[1] = 6, 6 zeros = lottos.count(0) correctnums = list(set(lottos) & set(win_nums)) return [rankset[len(correctnums)+zeros], rankset[len(correctnums)]] 간단히 풀었다. 최고 등수 = zero + 일치하는 숫자 개수최저 등수 = 일치하는 숫자 개수이다. *set의 교집합 = &set의 합집합 = |set의 차집합 ..
43. [1차] 다트 게임
2024. 7. 16. 18:20
프로그래머스/Lv. 1
유형 : 구현시간 : 20분 def solution(dartResult): answer = [] drlist = list(dartResult) #각 문자열의 list 생성 score = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] bonus = ['S', 'D', 'T'] option = ['*', '#'] #문자열의 문자 하나씩 순회 ansidx = -1 flag = False for i in range(len(drlist)): if flag == True: flag = False continue elif drli..
42. 기사단원의 무기 ★★ (약수의 개수)
2024. 7. 16. 17:52
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 10분 -> 시간 초과 1. 단순 구현 def solution(number, limit, power): answer = 약수(number, limit, power) return answerdef 약수(x, limit, power): ans = 0 for i in range(1, x+1): tmp = 0 for j in range(1, i+1): if i % j == 0: tmp += 1 if tmp > limit: tmp = power ans += tmp return ans 시간 초과 발생.. 너무 단순한 알고리즘이다.모두 for문으로 ..
41. 옹알이 (2)
2024. 7. 16. 15:55
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 10분 def solution(babbling): answer = 0 yes = ["aya", "ye", "woo", "ma"] for i in babbling: bablist = list(i) curvocab = '' recent = '' tf = [] for j in range(len(bablist)): curvocab += bablist[j] if ''.join(curvocab) in yes and recent != ''.join(curvocab): recent = ''.join(curvocab) cur..