Coding Test/programmers
숫자 게임 (리스트 비교, deque)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import deque def solution(A, B): answer = 0 A.sort() B.sort() A = deque(A) B = deque(B) while B: if A[0] < B[0]: answer += 1 A.popleft() B.popleft() else: B.popleft() return answer
스킬트리 (큐)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 선행 스킬 순서 skill과 유저들이 만든 스킬트리를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return def solution(skill, ski..
등굣길 (DP)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(m, n, puddles): d = [[0]*(m+1) for _ in range(n+1)] for i, j in puddles: d[j][i] = 1 d[0][1] = 1 for i in range(1, n+1): for j in range(1, m+1): if d[i][j]==1: d[i][j] = 0 else: d[i][j] = (d[i-1][j]+d[i][j-1]) % 1000000007 return d[n][m]
숫자 변환하기 (DP)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import sys INF = sys.maxsize def solution(x, y, n): answer = 0 dp = [INF] * (y+1) dp[x] = 0 for i in range (x, y+1): if dp[i] == INF: continue if i + n
카펫
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(brown, yellow): s = brown+yellow for i in range(1,s//2): if s%i==0: if i2: if (s//i-2)*(i-2)==yellow: return [s//i,i] def solution(brown, yellow): s = brown+yellow for i in range(1, int(yellow**(1/2))+1): if yellow % i == 0: if 2*(i + yellow//i) == brown-4: return [yellow//..
줄 서는 방법 (팩토리얼, 순열)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 사람의 수 n과, 자연수 k가 주어질 때, 사람을 나열 하는 방법을 사전 순으로 나열 했을 때, k번째 방법을 반환 [1722번] 순열의 순서 구하기(수학, 구현) 1722번: 순열의 순서 첫째 줄에 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄의 첫 번째 수는 소문제 번호이다. 1인 경우 k(1 ≤ k ≤ N!)를 입력받고, 2인 경우 임의의 순열을 나타내는 N개의 수를 입력받는다. N karla.tistory.com 풀이 def solution(n, k): answer = [] fList = [0] ..
행렬의 곱셈
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(arr1, arr2): answer = [[0]*len(arr2[0]) for _ in range(len(arr1))] for i in range(len(arr1)): for j in range(len(arr2[0])): for k in range(len(arr1[0])): answer[i][j] += arr1[i][k] * arr2[k][j] return answer def solution(arr1, arr2): return [[sum(a*b for a, b in zip(A_row,B..
스티커모으기 (DP)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 인접된 스티커 붙일 수 없음 첫번째 스티커 붙이냐 안붙이냐 두가지 DP 리스트 구하기 풀이 def solution(sticker): if len(sticker) == 1: return sticker[0] dp = [0 for _ in range(len(sticker))] dp[0] = sticker[0] dp[1] = sticker[0] for i in range(2, len(sticker) - 1): dp[i] = max(dp[i-2] + sticker[i], dp[i-1]) dp2 = [0 for _..
n^2 배열 자르기
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 전체 배열을 만들면 시간초과 (1 ≤ n ≤ 107) n=3 left=2 right=5 1 2 3 2 2 3 3 3 3 (0,0) (0,1) (0,2) (1,0) (1,1) (1,2) (2,0) (2,1) (2,2) max(0/3, 0%3) max(1/3, 1%3) max(2/3, 2%3) max(3/3, 3%3) max(4/3, 4%3) max(5/3, 5%3) max(6/3, 6%3) max(7/3, 7%3) max(8/3, 8%3) 풀이 def solution(n, left, right): answ..
연속 부분 수열 합의 개수 (원형 수열)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(elements): n=len(elements) s=set(elements) for i in range(1, n+1): for j in range(n): if i+j < n: s.add(sum(elements[j:j+i])) else: s.add(sum(elements[j:]) + sum(elements[:i+j-n])) return len(s) def solution(elements): n = len(elements) elements = elements*2 s = set() for i..