파이썬 알고리즘 : Build Array from Permutation

2024년 5월 2일 알고리즘 문제풀이 문제 Build Array from Permutation 난이도 Easy 코드 1 2 3 4 5 6 class Solution: def buildArray(self, nums: List[int]) -> List[int]: ans = [0 for _ in range(len(nums))] for i in range(len(nums)): ans[i] = nums[nums[i]] return ans

2024년 5월 2일 · 1 분 · 배준수

파이썬 알고리즘 : 코코넛 그 두 번째 이야기

2024년 4월 30일 알고리즘 문제풀이 문제 코코넛 그 두 번째 이야기 난이도 실버 5 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import sys def check(num: int): cnt = 1 for i in range(2,num): tmp = num for _ in range(i): tmp -= 1 tmp *= (i-1) if not tmp%i: tmp //= i else: break else: cnt = i return cnt while True: n = int(sys.stdin.readline()) if n == -1: break tmp = check(n) if tmp < 2: print(f"{n} coconuts, no solution") else: print(f"{n} coconuts, {tmp} people and 1 monkey") 문제에서 처리하는 순서대로 그대로 구현했다. 약간 헷갈렸던건, 예시에선 5명이였는데 인원수대로 처리하면 된다는 걸 생각못하고 무조건 5명이라 생각했다.. ...

2024년 4월 30일 · 1 분 · 배준수

파이썬 알고리즘 : 메뉴 리뉴얼

2024년 4월 29일 알고리즘 문제풀이 문제 메뉴 리뉴얼 난이도 Lv. 2 코드 1차시도 85/100 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 def solution(orders, course): answer = [] arr_set = set() for i in range(len(orders)): for j in range(len(orders[i])): arr_set.add(orders[i][j]) orders[i] = set(orders[i]) for n in course: arr = [] cnt = 2 nCr = itertools.combinations(arr_set,n) for x in list(nCr): tmp = 0 for p in orders: if set(x) <= p: tmp += 1 k = sorted(x) word = ''.join(k) if tmp > cnt: cnt = tmp arr = [word] elif tmp == cnt: arr.append(word) answer += arr answer.sort() return answer 반복문을 남발하여서 그런지, 4개 정도의 테스트케이스가 시간초과로 통과하지 못했다. ...

2024년 4월 29일 · 1 분 · 배준수

파이썬 알고리즘 : 기능개발

2024년 4월 26일 알고리즘 문제풀이 문제 기능개발 난이도 Lv. 2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def solution(progresses, speeds): answer = [] idx = 0 while idx < len(progresses): cnt = 0 for i in range(len(progresses)): progresses[i] += speeds[i] while idx < len(progresses): if progresses[idx] >= 100: idx += 1 cnt += 1 else: break if cnt: answer.append(cnt) return answer 가장 앞에 있는 기능이 100이 될때까지 모든 값들의 크기를 늘렸다. 이후 첫번 째 기능 개발이 완료되었을 때 100이 넘는 것들을 같이 처리해주고 갯수를 세주었다. ...

2024년 4월 26일 · 1 분 · 배준수

파이썬 알고리즘 : 소수 찾기

2024년 4월 25일 알고리즘 문제풀이 문제 소수 찾기 난이도 Lv. 1 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 def solution(n): answer = 0 for num in range(2,n+1): if num == 2 or num == 3: answer += 1 continue if not num%2: continue for i in range(2,int(num**(0.5))+1): if not num%i: break else: answer += 1 return answer

2024년 4월 25일 · 1 분 · 배준수

파이썬 알고리즘 : 주식가격

2024년 4월 23일 알고리즘 문제풀이 문제 주식가격 난이도 Lv. 2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 def solution(prices): answer = [0 for _ in range(len(prices))] stk = [] for i in range(len(prices)): price = prices[i] if not stk: stk.append([price,i]) continue while stk: now_price, now_time = stk[-1] if price < now_price: answer[now_time] = (i-now_time) stk.pop() else: break stk.append([price,i]) if stk: while stk: p,t = stk.pop() answer[t] = len(prices)-1-t return answer

2024년 4월 23일 · 1 분 · 배준수

파이썬 알고리즘 : 데이터 분석

2024년 4월 19일 알고리즘 문제풀이 문제 데이터 분석 난이도 Lv. 1 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 def solution(data, ext, val_ext, sort_by): answer = [] for x in data: arr = dict() arr["code"] = x[0] arr["date"] = x[1] arr["maximum"] = x[2] arr["remain"] = x[3] if arr[ext] < val_ext: answer.append(x) if sort_by == 'code': idx = 0 elif sort_by == 'date': idx = 1 elif sort_by == 'maximum': idx = 2 else: idx = 3 answer.sort(key = lambda x: (x[idx])) return answer

2024년 4월 19일 · 1 분 · 배준수

파이썬 알고리즘 : Score of a String

2024년 4월 18일 알고리즘 문제풀이 문제 Score of a String 난이도 Easy 코드 1 2 3 4 5 6 class Solution: def scoreOfString(self, s: str) -> int: answer = 0 for i in range(len(s)-1): answer += abs(ord(s[i]) - ord(s[i+1])) return answer ord() : 문자의 아스키코드 숫자 값을 반환 chr() : 숫자의 아스키코드 숫자 값을 반환

2024년 4월 18일 · 1 분 · 배준수

파이썬 알고리즘 : 큰 수 만들기

2024년 4월 16일 알고리즘 문제풀이 문제 큰 수 만들기 난이도 Lv. 2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 def solution(number, k): stk = [] for num in number: # stk가 비었으면 넣음 if not stk: stk.append(num) continue if k > 0: # 지금 주목하는 수가 방금 넣은 수보다 크다면 뺸다. while stk[-1] < num: stk.pop() k -= 1 # 더이상 뺄 것이 없거나 더이상 빼면 안되면 반복문 종료 if not stk or k <= 0: break stk.append(num) # 모두 순회했는데 아직 뺄것이 남았다면 가장 뒤에것만뺀다. if k: stk = stk[:-k] answer = ''.join(stk) else: answer = ''.join(stk) return answer

2024년 4월 16일 · 1 분 · 배준수

파이썬 알고리즘 : 의상

2024년 4월 15일 알고리즘 문제풀이 문제 의상 난이도 Lv. 2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 def solution(clothes): answer = 0 arr = dict() for x in clothes: [n,t] = x if t in arr: arr[t] += 1 else: arr[t] = 1 cnt = 1 for a,b in arr.items(): cnt *= (b+1) answer = cnt-1 return answer

2024년 4월 15일 · 1 분 · 배준수