파이썬 알고리즘 : 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 분 · 배준수

파이썬 알고리즘 : 실패율

2024년 4월 12일 알고리즘 문제풀이 문제 실패율 난이도 Lv. 1 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 def solution(N, stages): answer = [] arr = [0 for _ in range(N+2)] arr_f = [0 for _ in range(N+2)] for i in range(len(stages)): now = stages[i] for j in range(1,now+1): arr[j] += 1 arr_f[now] += 1 tmp = [] for i in range(1,N+1): if arr[i] == 0: tmp.append([0,i]) else: tmp.append([(arr_f[i]/arr[i]),i]) tmp.sort(reverse=True, key=lambda x : (x[0],-x[1])) for i in range(N): answer.append(tmp[i][1]) return answer

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

파이썬 알고리즘 : 나누어 떨어지는 숫자 배열

2024년 4월 11일 알고리즘 문제풀이 문제 나누어 떨어지는 숫자 배열 난이도 Lv. 1 코드 1 2 3 4 5 6 7 8 9 10 def solution(arr, divisor): answer = [] for i in arr: if not i%divisor: answer.append(i) answer.sort() if answer: return answer else: return [-1]

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

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

2024년 4월 9일 알고리즘 문제풀이 문제 소수 찾기 난이도 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 27 28 29 30 31 32 33 34 35 36 37 from itertools import permutations def check_prime(n): if n < 2: return False elif n<4: return True if not n%2: return False for i in range(2,int(n**(0.5))+1): if not n%i: return False else: return True def make_arr(arr): result = [] n = len(arr) tmp = [] for i in range(1,n+1): tmp += list(permutations(arr,i)) for a in tmp: result.append(int("".join(a))) return result def solution(numbers): answer = 0 result = set() arr = list(numbers) arr = make_arr(arr) arr = set(arr) for i in arr: if check_prime(int(i)): result.add(int(i)) return len(result)

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

파이썬 알고리즘 : 전화번호 목록

2024년 4월 8일 알고리즘 문제풀이 문제 전화번호 목록 난이도 Lv. 2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 def solution(phone_book): answer = True arr =dict() for phone_number in phone_book: arr[phone_number] = True for phone_number in phone_book: temp="" for num in phone_number: temp +=num if temp in arr and temp!=phone_number: answer = False return answer

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

파이썬 알고리즘 : 옹알이 (2)

2024년 4월 6일 알고리즘 문제풀이 문제 옹알이 (2) 난이도 Lv. 1 코드 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 def search_index(arr,k): result = -1 if k in arr: result = arr.index(k) return result def solution(babbling): answer = 0 arr = ["aya", "ye", "woo", "ma"] for word in babbling: idx = 0 n = len(word) last_find_idx = -1 while idx <= n: if not n: answer += 1 break tmp = word[:idx+1] search_result = search_index(arr,tmp) if search_result != -1 and search_result != last_find_idx: last_find_idx = search_index(arr,tmp) word = word[idx+1:] n = len(word) idx = 0 else: idx += 1 return answer

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

파이썬 알고리즘 : 없는 숫자 더하기

2024년 4월 5일 알고리즘 문제풀이 문제 없는 숫자 더하기 난이도 Lv. 1 코드 1 2 3 4 5 def solution(numbers): answer = -1 arr = set(numbers) answer = 45 - sum(arr) return answer

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

파이썬 알고리즘 : 랜선 자르기

2024년 4월 3일 알고리즘 문제풀이 문제 소수 경로 난이도 실버 2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import sys k,n = map(int,sys.stdin.readline().split()) lan = [] for _ in range(k): lan.append(int(sys.stdin.readline())) low = 0 high = 2**31-1 while low <= high: mid = (low+high)//2 cnt = 0 for thing in lan: cnt += thing//mid if cnt >= n: low = mid+1 else: high = mid-1 print((high+low)//2) 생각보다 평범한 이진탐색문제였다. ...

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