JasonScript

Jason's Research Blog

Development 20

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

문제 링크 > 코딩테스트 연습 - 호텔 대실 | 프로그래머스 스쿨 (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 ..

< 알고리즘 문제 풀이 > 미로 탈출

문제 링크 > 코딩테스트 연습 - 미로 탈출 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(maps): rows, cols = len(maps), len(maps[0]) start, end, distance = 0, 0, 0 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] path = [] visited = [[0 for _ in range(cols)] for _ in range(rows)] L = 0 # 시작 for i, x in enumera..

< 알고리즘 문제 풀이 > 혼자서 하는 틱택토

문제 링크 > 코딩테스트 연습 - 혼자서 하는 틱택토 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def check(board, m): # 가로 for r in board: if r == [m, m, m]: return True # 세로 for c in range(3): if [board[0][c], board[1][c], board[2][c]] == [m, m, m]: return True # 대각선 if [board[0][0], board[1][1], board[2][2]] == [..

< 알고리즘 문제 풀이 > 당구 연습

문제 링크 > 코딩테스트 연습 - 당구 연습 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(m, n, startX, startY, balls): answer = [] for ball in balls: diffX = startX - ball[0] diffY = startY - ball[1] left = (startX + ball[0]) ** 2 + (diffY ** 2) # 왼쪽 쿠션 right = ((m - startX) + (m - ball[0])) ** 2 + ..

< 알고리즘 문제 풀이 > 리코쳇 로봇

문제 링크 > 코딩테스트 연습 - 리코쳇 로봇 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(board): answer = 0 visited = [] row, col = len(board), len(board[0]) for i in range(row): visited.append([0 for _ in range(col)]) for j in range(col): if board[i][j]=='R': rx, ry = i, j elif board[i][j]=='G': g..

< 알고리즘 문제 풀이 > 광물 캐기

문제 링크 > 코딩테스트 연습 - 광물 캐기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(picks, minerals): answer = 0 num = {'diamond': 0, 'iron': 1, 'stone': 2} # 각 곡괭이로 광물을 캘 때의 피로도 fatigue = [[1, 1, 1], [5, 1, 1], [25, 5, 1]] # 캘 수 있는 해당 개수까지 슬라이싱 minerals = minerals[:5 * sum(picks)] # 각 광물의 수 체크..

< 알고리즘 문제 풀이 > 과제 진행하기

문제 링크 > 코딩테스트 연습 - 과제 진행하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(plans): answer = [] def convert_time(s): h, m = map(int, s.split(':')) return h * 60 + m plans = [(name, convert_time(start), int(playtime)) for name, start, playtime in plans] plans.sort(key = lambda x: x[1])..

< 알고리즘 문제 풀이 > 연속된 부분 수열의 합

문제 링크 > 코딩테스트 연습 - 연속된 부분 수열의 합 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(sequence, k): answer = [] n = len(sequence) start, end = 0, 0 for i in range(n): while start < k and end < n: start += sequence[end] end += 1 if start == k: answer.append([i, end - 1]) start -= sequence[i..

< 알고리즘 문제 풀이 > 두 원 사이의 정수 쌍

문제 링크 > 코딩테스트 연습 - 두 원 사이의 정수 쌍 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > import math def solution(r1, r2): answer = 0 for x in range(1, r2 + 1): if r1 >= x: y1 = math.ceil((r1 ** 2 - x ** 2) ** 0.5) else: y1 = 0 y2 = math.floor((r2 ** 2 - x ** 2) ** 0.5) dots = y2 - y1 + 1 answer += dots r..

< 알고리즘 문제 풀이 > 요격 시스템

문제 링크 > 코딩테스트 연습 - 요격 시스템 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(targets): answer = 0 targets.sort(key = lambda x: x[1]) shoot = -1 for target in targets: s, e = target if s > shoot: answer += 1 shoot = e - 0.5 return answer 접근 방법 미사일 목록을 종료 시점을 기준으로 정렬합니다. shoot 변수를 초기화합니다...