31. 두 개 뽑아서 더하기 (itertools - combinations)
2024. 7. 14. 02:28
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 5분def solution(numbers): from itertools import combinations answer = [] for st in combinations(numbers, 2): if sum(st) not in answer: answer.append(sum(st)) answer.sort() return answer itertools와 combinations를 사용해 간단하게 풀이했다.
30. 가장 가까운 같은 글자 (dict의 활용, 관련 함수들)
2024. 7. 14. 01:39
프로그래머스/Lv. 1
유형 : 구현 풀이 시간 : 15분 def solution(s): answer = list(s) ltdict = {} res = [-1 for x in range (len(s))] for i in range(len(s)): if s[i] in ltdict.keys(): res[i] = i - ltdict[s[i]] ltdict[s[i]] = i else: ltdict[s[i]] = i return res 비교적 구상을 잘 했던 문제. 중복된 key를 가질 수 없는 dict의 특성을 활용하여 풀었다. 만약 dict에 해당 key가 이미 있다면 -> 현재 index - 최신 index (dict에 ..
29. 시저 암호 ★ (ord, chr, 간단히 알파벳 순회하기)
2024. 7. 14. 01:15
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 약 30분?def solution(s, n): tmp = list(ord(s[i]) for i in range(len(s))) for i in range(len(tmp)): if tmp[i] == 32: continue else: if tmp[i] 90: tmp[i] += n tmp[i] -= 26 elif tmp[i] 122: tmp[i] += n tmp[i] -= 26 else: tmp[i] += n ..
28. 최소직사각형 ★
2024. 7. 14. 00:39
프로그래머스/Lv. 1
유형 : 구현풀이시간 : 40분....왜 1점짜리일까? 1. 처음 작성한 코드. 그리디로 접근 def solution(sizes): answer = 0 garo = [sizes[i][0] for i in range(len(sizes))] sero = [sizes[i][1] for i in range(len(sizes))] maxgaro = max(garo) maxsero = max(sero) #가로 값 바꾸기 newgaro = garo.copy() newsero = sero.copy() newgaro[garo.index(maxgaro)] = sero[garo.index(maxgaro)] newsero[garo.index(maxgaro)] = ..
27. 삼총사 (itertools - combinations)
2024. 7. 12. 22:35
프로그래머스/Lv. 1
유형 : 구현.ㅏ하하 1. 나의 풀이 : 요상한 재귀,def solution(number): answer = rec(0, number, 0) return answer/6def rec(itern, number, res): if itern == 3: if res == 0: return 1 else: return 0 ans = [] for i in range(len(number)): new = number.copy() curr = new.pop(i) ans.append(rec(itern + 1, new, res + curr)) return sum(ans) 1, 2, 3 tupl..
26. 이상한 문자 만들기 (enumerate)
2024. 7. 12. 22:18
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 10분 def solution(s): temp = s.split(" ") answer = [] for word in temp: word = list(word) newwd = [] for i in range(len(word)): if i % 2 == 0: newwd.append(word[i].upper()) else: newwd.append(word[i].lower()) answer.append(''.join(newwd)) answer.append(' ') a = ''.join(answer) retu..
25. 3진법 뒤집기 ★ (10진법 -> 3진법, 3진법 -> 10진법)
2024. 7. 12. 21:58
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 10분 def solution(n): n = tri(n) n = list(n) n.reverse() n = ''.join(n) n = int(n, 3) return ndef tri(n): ans = [] curr = 3 while True: if n * n진법 -> 10진법 : int (숫자, n)* 10 -> 16, 8, 2 : 내장함수hex, oct, bin* 그 외는 내장함수가 없으니까 알아서 함수 써라 3진법 함수쓰는데 시간 다씀. 내장함수가 없다니 파이썬 내 믿음을 저버렸다... def solution(n): tmp = '' while n: tmp += str(n % 3) ..
24. 예산 ★ (그리디;;)
2024. 7. 12. 21:43
프로그래머스/Lv. 1
유형 : 그리디....나는 그리디가 싫다.,........ 1. recursion def solution(d, budget): answer = buy(d, budget, 0) return answerdef buy(d, n, finish): if n == 0 or not d: return finish res = [] for i in range(len(d)): if d[i] > n: return finish new = d.copy() curr = new.pop(i) res.append(buy(new, n-curr, finish + 1)) return max(res) 결과 : 시간 초과 recur..