전체 글

공부중인 학생입니다! 글에서 틀린 곳이 있으면 지적 부탁드립니다 블로그 이사 https://velog.io/@joohr1234
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. ..
from itertools import cycle a = cycle([1,2,3]) print(next(a)) print(next(a)) print(next(a)) print(next(a)) print(next(a)) 순환하는 배열 만들기
def solution(answers): answer = [] supo = {1:[1,2,3,4,5], 2:[2,1,2,3,2,4,2,5], 3:[3,3,1,1,2,2,4,4,5,5]} idx = {1:0, 2:0, 3:0} correct = [-1,0,0,0] for a in answers: for i in [1,2,3]: if supo[i][idx[i]] == a: correct[i] += 1 idx[i] = (idx[i]+1)%len(supo[i]) max_correct = max(correct) for i, c in enumerate(correct): if max_correct == c: answer.append(i) return sorted(answer) 1. supo딕셔너리: 수포자 번호 1,..
import re def solution(dartResult): bonus = {'S' : 1, 'D' : 2, 'T' : 3} option = {'' : 1, '*' : 2, '#' : -1} p = re.compile('(\d+)([SDT])([*#]?)') dart = p.findall(dartResult) for i in range(len(dart)): if dart[i][2] == '*' and i > 0: dart[i-1] *= 2 dart[i] = int(dart[i][0]) ** bonus[dart[i][1]] * option[dart[i][2]] answer = sum(dart) return answer def solution(dartResult): square = {"S":1, "D":..
def solution(dartResult): square = {"S":1, "D":2, "T":3} score = curr = prev = 0 blockSet = [] block = "" for d in dartResult: if d.isdigit() and (not block.isdigit()): # 한 블록 완성 blockSet.append(block) block = d else: block += d blockSet.append(block) for block in blockSet: num_str = "" for b in block: if b.isdigit(): num_str += b elif b in ["S", "D", "T"]: curr = int(num_str) curr = curr ** squ..
def solution(x): sum = 0 str_x = str(x) for s in str_x: sum += int(s) if (x >= sum): if (x % sum == 0): return True return False 1, 값을 str로 받아 자릿수들을 모두 더해준다. 2. 더한 값이 원래 값보다 작은지 확인한 후, 나누어떨어지는지 확인하여 적당한 값을 return 해준다. (첫 번째 if 문은 필요없었던 것 같다. 항상 자릿수를 더한 값보다 원래 값이 클 수밖에 없으니 말이다.) def solution(x): if (x % sum([int(s) for s in str(x)]) == 0): return True return False solution = lambda x: (x % sum([i..
import collections def solution(id_list, report, k): answer = [0 for x in range(len(id_list))] user = collections.defaultdict(set) for r in report: tmp = r.split() reporter = tmp[0] reported = tmp[1] user[reported].add(reporter) for u in user.keys(): if len(user[u]) >= k: for s in list(user[u]): answer[id_list.index(s)] += 1 return answer 1. answer에 id_list의 길이(유저 수)만큼 0을 채워준다. // 반환할 때 인덱스를 위해 ..
def solution(a, b): return sum(A*B for A, B in zip(a,b)) 이거 풀기 바로 직전에 음양더하기 라는 비슷한 유형의 문제를 푼 기억이 있어서 같은 방식으로 풀었다. 한 줄로 완성되니까 기분 좋다.
fladi
주프링 블로그