[NeetCode/Python] Climbing Stairs
·
Algorithm/NeetCode
문제 링크: https://neetcode.io/problems/climbing-stairs NeetCode neetcode.io 단순한 조합 문제라고 생각했다. 이런 비슷한 문제를 예전에 풀었지만 나중에야 기억이 났는데.. 암튼 초반에 그래서 삽질을 좀 했다. [초반 틀린 풀이]from itertools import permutationsclass Solution: def climbStairs(self, n: int) -> int: # 조합 구하기 + 순서 고려 result = 1 # consist of all 1s + possible 2s for i in range(1, n//2 + 1): # i = num of 2 goal..
[LeetCode/Python] 13. Roman to Integer
·
Algorithm/LeetCode
문제 링크: https://leetcode.com/problems/roman-to-integer/description/ 로만 숫자를 10진수 숫자로 치환하는 간단한 문제였다.고려해야할 점은 보통 로만 숫자는 큰 숫자 -> 작은 숫자 순서로 쓰여지는데, 작은 숫자가 먼저온 후에 큰 숫자가 오면, 뒤에온 큰 숫자에 앞에 작은 숫자를 빼줘야한다는 점이었다. class Solution: def romanToInt(self, s: str) -> int: # largest -> smallest # exception: small -> large to substract roman = { "I": 1, "V": 5, "..
[NeetCode/Python] Find Target in Rotated Sorted Array
·
Algorithm/NeetCode
문제 링크: https://neetcode.io/problems/find-target-in-rotated-sorted-array NeetCode neetcode.io 굉장히 특이한 문제였다.O(n)으로 하면 풀기 쉽지만 O(log n)의 시간 복잡도로 문제를 풀라고 되어있다.딱 보자마자 binary search가 떠올랐는데 문제는 문제 조건이다. binary search는 알다시피 정렬된 배열에서 사용하는 sort 알고리즘이다.하지만 이 문제는 기존 정렬 배열에서 특정 횟수만큼 rotate된 배열을 input으로 두었다.binary search를 활용하여 푸는 문제들은 봤어도 이렇게 응용한 문제는 처음봐서 굉장히 신선했다.- 풀이 찾아 해매기1. 처음에는 기존 sorted array에서 rotate가 된..
[LeetCode/Python] 1492. The kth Factor of n
·
Algorithm/LeetCode
n의 약수를 찾고 그 중 k번째 숫자를 리턴하는 문제이다.간단한 문제였다. class Solution: def kthFactor(self, n: int, k: int) -> int: divisor = set([]) for i in range(1, int(n**(1/2)) + 1): if (n % i == 0): divisor.add(i) divisor.add(n // i) if k > len(divisor): return -1 return sorted(list(divisor))[k-1] 시간 복잡도약수를 구할 숫자: N=> O(1/2N)  다른..
[백준/Python] 1700번 - 멀티탭 스케줄링
·
Algorithm/BaekJoon
import sys from collections import deque input = sys.stdin.readline n, k = map(int, input().split()) # n: 플러그 개수 usage = list(map(int, input().split())) plug = usage[:1] # 앞 두개가 모두 같은 숫자일 수 있으므로 1개만 꽂아넣기 usage = deque(usage[1:]) result = 0 while usage: i = usage.popleft() # 이미 꽂혀있을 경우 if i in plug: continue # 플러그 자리가 남았을 경우 if len(plug) < n: plug.append(i) continue # 꽂혀있는 것들 중 뽑을 것 고르기(plug inde..
[백준/Python] 16200번 - 해커톤
·
Algorithm/BaekJoon
import sys input = sys.stdin.readline # 팀의 수가 최소 # i번은 팀원 수가 자기 자신 포함 xi명 이하여야함 n = int(input()) xi = [0 for _ in range(n+1)] # xi의 범위는 1 O(n) 다른 사람 풀이 - 위 아이디어를 좀 더 간단하게 구현할 수 있다. xi 배열을 인원수 측정에 사용하지 않고 그냥 입력값 그대로 받아서 오름차순으로 정렬한다. 그리고 그냥 최대 인원 수 대로 끊어서 센다(간단 그잡채ㅋㅋㅋㅋ내 고민이 너무 허무해~) N = int(input()) X = list(map(int,input().split())) X.sort() i, cnt = 0, 0 while i < len(X): cnt += 1 i += X[i] prin..