분류 전체보기

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)) 이거 풀기 바로 직전에 음양더하기 라는 비슷한 유형의 문제를 푼 기억이 있어서 같은 방식으로 풀었다. 한 줄로 완성되니까 기분 좋다.
def solution(absolutes, signs): answer = 0 for i in range(len(absolutes)): if signs[i]: answer += absolutes[i] else: answer -= absolutes[i] return answer 인덱스 0부터 len(absolutes)-1까지 하나씩 접근하면서 양이면 더해주고 음이면 빼준다. => 한 줄이면 끝나는 풀이인데 좀 길게한 느낌도 있다. 너무 짧은 코드도 읽기 어렵다면 좋은 건 아니지만.. 새로운 도구들도 많이 사용해봐야겠다. zip같은 것도 많이 사용해보구
def solution(numbers): return sum(range(10)) - sum(numbers) 완전 간결하다. 어차피 합을 구하는 거니까 이게 제일 베스트일 것 같다. solution = lambda x: sum(range(10)) - sum(x) 람다로 더더 줄여버렸다. def solution(numbers): return sum([i for i in range(10) if i not in numbers]) 문제를 그대로 넣어버린 코드다. 의도가 한눈에 보인다. 멋있다.
def solution(numbers): answer = 0 allNum = [0,1,2,3,4,5,6,7,8,9] for n in numbers: allNum.remove(n) for n in allNum: answer += n return answer ■ 사용 변수: allNum(0~9까지의 숫자가 저장된 리스트) 1. numbers에 저장된 변수를 allNum에서 remove해준다 2. 남은 수들을 각각 더해준다. => 파이썬에 sum함수가 있다는 걸 까먹었다. 문제를 풀고난 후 더 좋은 풀이가 없을지 고민하는 과정을 자꾸 까먹는다. 문제를 풀었다고 좋아하지말고 다른 방법도 생각해보자 좀
fladi
'분류 전체보기' 카테고리의 글 목록 (31 Page)