def solution(a, b): days = [0,31,29,31,30,31,30,31,31,30,31,30,31] #0월,1월,2월~~ names = ['THU','FRI','SAT','SUN','MON','TUE','WED'] dayCount = b for i in range(1, a): #5월: 1월~4월 일 수 더해줌 dayCount += days[i] return names[dayCount % 7] - days: 인덱스에 해당하는 월이 포함하는 일 수 배열(0은 임시로 만든거, 1월은 days[1], 2월은 days[2] ...) - names: 1일이 금요일이 될 수 있도록 배치한 요일 문자열들 1. daycount에 b(일)를 더해줌 2. a이전 월에 해당하는 일 수를 모두 daycoun..
분류 전체보기
def solution(numbers): answer = set() for i in range(0, len(numbers)-1): for j in range(i+1, len(numbers)): answer.add(numbers[i]+numbers[j]) return sorted(list(answer)) => sorted(answer)도 가능 1. i는 [0~N-2], j는 [i+1~N-1]를 반복함. (중복되지 않도록 j는 i+1부터 반복) # 버블정렬 느낌? 2. 서로 다른 인덱스를 더한 값을 집합에 넣음. 중복방지 3. 집합을 리스트로 만들고 정렬해서 반환 from itertools import combinations def solution(numbers): answer = set() com = co..
def solution(d, budget): support = 0 d.sort() # 오름차순 정렬 for money in d: if money>budget: break support += 1 budget -= money return support 1. 받은 금액 리스트를 오름차순으로 정렬해준다 [1,2,3,4] 2. 금액을 하나씩 빼서 예산과 비교한 후, 예산이하의 값이면 support를 1증가시켜주고 예산에서 금액을 뺀다. 3. 만약 예산보다 금액이 크다면, 그 뒤에 나오는 금액들은 항상 예산보다 클 것이기 때문에 break해준다.
def solution(n): numStr = [] while (n != 0): # 3진법 거꾸로 0021 numStr.append(n%3) n = n//3 numStr.reverse() # 3진법 1200 # 자리수*(3^인덱스) return sum([digit*(3**i) for i, digit in enumerate(numStr)]) 1. 3을 계속 나누면서 나머지를 구하는 방식으로 3진법 각 자리수를 구함. => [0,0,2,1] 2. 인덱스를 지수로 사용하기 위해 reverse()를 해줌 => [1,2,0,0] 3. 각 자리수에 맞는 3의 지수승을 곱한 리스트의 sum을 리턴
def solution(n): if n
from collections import defaultdict def isPrime(num): if num==1: return False end = int(num**(0.5)) for i in range(2, end+1): #2~end if num%i == 0: return False return True def Factorization(num): primes = defaultdict(int) #{소인수: 지수} tmp=num for k in range(2, num+1): if isPrime(k): while tmp%k == 0 and tmp != 0: primes[k] += 1 tmp = tmp//k return primes def solution(left, right): answer = 0 for ..
1. value값을 기준으로 딕셔너리 정렬 dic = {1:4, 2:3, 3:2, 4:1} sorted(dic.items(), key=lambda x:x[1]) # 오름차순 sorted(dic.items(), key=lambda x:x[1], reverse=True) # 내림차순 2. value값을 기준으로 key 정렬 dic = {1:4, 2:3, 3:2, 4:1} sorted(dic.keys(), key=lambda x:dic[x]) sorted(dic, key=lambda x:dic[x]) 키 값들만 정렬! .keys()를 생략하든 안하든 같은 결과를 냅니다.
from collections import Counter, defaultdict def solution(N, stages): answer = [] _stages = dict(Counter({n+1:0 for n in range(N+1)})) _stages.update(dict(Counter(stages))) # {stage: 개수} failure = defaultdict(list) # {실패율: [stage1, stage2, ...]} clear = _stages[N+1] for i in range(N, 0, -1): clear += _stages[i] if clear == 0: failure[0].append(i) else: failure[_stages[i]/clear].append(i) for f i..
def solution(n, lost, reserve): students = [1 for i in range(n)] for r in reserve: students[r-1] += 1 for l in lost: students[l-1] -= 1 for i in range(n): if students[i] == 2: if i>0 and students[i-1] == 0: students[i-1] = 1 students[i] = 1 elif i0, students))) 체육복이 없는 학생(체육복 도둑맞은 학생)/ 여분 체육복이 있는 학생/ 체육복 1. 모든 학생의 체육복개수를 저장한 배열 students를 만듦. 처음엔 모두 체육복이 1개씩 있다고 가정 students = [1,1,1,1,1, ...] 2. ..