JasonScript

Jason's Research Blog

Development/Algorithm 19

< 알고리즘 문제 풀이 > 테이블 해시 함수

문제 링크 > 코딩테스트 연습 - 테이블 해시 함수 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(data, col, row_begin, row_end): answer = 0 data = sorted(data, key = lambda x: [x[col - 1], -x[0]]) for i in range(row_begin, row_end + 1): total = 0 for j in data[i - 1]: total += j % i answer ^= total retu..

< 알고리즘 문제 풀이 > 유사 칸토어 비트열

문제 링크 > 코딩테스트 연습 - 유사 칸토어 비트열 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(n, l, r): answer = f(n, r) - f(n, l - 1) return answer def f(n, pos): if n == 1: return '11011'[:pos].count('1') quotient, remainder = divmod(pos, 5 ** (n - 1)) cnt = 0 if quotient 2: cnt = 4 ** (n - 1) * (..

< 알고리즘 문제 풀이 > 마법의 엘레베이터

문제 링크 > 코딩테스트 연습 - 마법의 엘리베이터 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(storey): answer = [] def dfs(stage, count): # 목표 층에 도달하면 현재까지의 이동 횟수를 answer에 추가 if stage == 0: answer.append(count) return # 현재 층의 일의 자리 숫자 계산 one = stage % 10 # 위로 올라가거나 아래로 내려가는 데 필요한 이동 횟수 계산 up, down = ..

< 알고리즘 문제 풀이 > 이모티콘 할인행사

문제 링크 > 코딩테스트 연습 - 이모티콘 할인행사 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > from itertools import product def solution(users, emoticons): answer = [0, 0] n = len(users) m = len(emoticons) discount_rate = [10, 20, 30, 40] rate_list = list(product(discount_rate, repeat = m)) for rate in rate_list:..

< 알고리즘 문제 풀이 > 택배 배달과 수거하기

문제 링크 > 코딩테스트 연습 - 택배 배달과 수거하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(cap, n, deliveries, pickups): deliveries.reverse() pickups.reverse() answer = 0 box_d, box_p = 0, 0 for i in range(n): box_d += deliveries[i] box_p += pickups[i] while box_d > 0 or box_p > 0: box_d -= cap ..

< 알고리즘 문제 풀이 > 시소 짝궁

문제 링크 > 코딩테스트 연습 - 시소 짝꿍 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > from collections import Counter def solution(weights): answer = 0 counter = Counter(weights) weights = sorted(set(weights)) for k, v in counter.items(): if v >= 2: answer += v * (v-1) // 2 for w in weights: if w * 2/3 in wei..

< 알고리즘 문제 풀이 > 숫자 변환하기

문제 링크 > 코딩테스트 연습 - 숫자 변환하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > from collections import deque def solution(x, y, n): if x == y: return 0 visited = set() queue = deque([(x, 0)]) while queue: current, operations = queue.popleft() if current == y: return operations for operation in [curre..

< 알고리즘 문제 풀이 > 뒤에 있는 큰 수 찾기

문제 링크 > 코딩테스트 연습 - 뒤에 있는 큰 수 찾기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(numbers): answer = [-1] * len(numbers) stack = [] for i, n in enumerate(numbers): while stack and stack[-1][1] < n: num = stack.pop() answer[num[0]] = n stack.append([i, n]) return answer

< 알고리즘 문제 풀이 > 무인도 여행

문제 링크 > 코딩테스트 연습 - 무인도 여행 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > import sys sys.setrecursionlimit(10**5) import collections def solution(maps): rows, cols = len(maps), len(maps[0]) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] visited = [[False for _ in range(cols)] for _ in range(rows)] answer ..

< 알고리즘 문제 풀이 > 호텔 대실

문제 링크 > 코딩테스트 연습 - 호텔 대실 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def to_min(s): h, m = s.split(":") return int(h) * 60 + int(m) def solution(book_time): array = [] for s, e in book_time: s = to_min(s) e = to_min(e) + 10 array.append((s, 's')) array.append((e, 'e')) array.sort() count = 0 ..