32. 콜라 문제 ★
2024. 7. 14. 03:10
프로그래머스/Lv. 1
유형: 재귀 (X) 구현풀이 시간 : 10분 정도? -> 재귀 깊이에 걸림 1. 나의 풀이 import syssys.setrecursionlimit(10000)def givecola(a, b, remain): if remain 재귀함수가 바로 떠올라서 재귀로 풀었는데 계속 12번 테케에서 걸렸다.재귀함수로 풀이하는 바람에 재귀 깊이가 너무 깊어져서 그런 거였다..실전에서 이러면 빠르게 다른 풀이로 바꿔야 할 것 같다. import syssys.setrecursionlimit(10000) sys.setrecursionlimit 함수를 이용해 재귀 스택 깊이를 더 늘릴 수 있긴 하다.그래도 반복문으로 풀이하는 게 좋아보임. 2. 반복문 풀이비슷한 코드를 반복문으로 작성하면 된다. 완전 쉽게 풀림..
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) ..