Algorithm(116)
-
[프로그래머스 LEVEL2 : 멀리 뛰기][python]
https://school.programmers.co.kr/learn/courses/30/lessons/12914# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 아이디어 # 1:1, 2:2, 3:3, 4:5, 5:8 ... # 메모이제이션 점화식 # 시간복잡도 # O(n) # 공간복잡도 # O(n) def solution(n): answer = 0 arr = [0,1,2] if n > 2: for i in range(3,n+1): arr.append((arr[i-2] + arr[i-1])%1234567) answer = arr[n] return an..
2022.08.02 -
[프로그래머스 LEVEL2 : 위장][python]
https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 아이디어 # 각 의상종류별로 해시하여 딕셔너리에 저장 # 경우의 수 = (각 종류별 의상수 + 1(안 입는 경우))의 곱 => 전체 경우의 수 # 모두 안 입는 경우는 허용되지 않으므로 전체 경우의 수 - 1 # 시간복잡도 # O(n) def solution(clothes): answer = 1 closet = {} for clothe in clothes: closet[clothe[1]]= [..
2022.07.29 -
[프로그래머스 LEVEL2 : 전화번호 목록][python]
https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 아이디어 # 접두어가 있는 지 확인하는 것은 문자열의 앞에서 특정 인덱스까지의 글자를 비교하는 것 # 먼저 딕셔너리에 키값으로 phone_book 원소 저장 # 이후 phone_book의 원소마다 앞에서부터 한글자씩 늘려가며 딕셔너리에 존재여부 확인 # 시간복잡도 # O(N*M) N:phone_book길이, M: 전화번호 길이 def solution(phone_book): answer = Tr..
2022.07.27 -
[프로그래머스 LEVEL2 : 더 맵게][python]
https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 아이디어 # heapq 모듈은 최소 힙이므로, pop을 통해 가장작은 값, 두번째로 작은 값을 추출 # 이후 새로이 만든 스코빌 지수를 다시 push 해서 힙을 구성 # 반복 종료조건은 가장작은 값이 k이상인 경우, 모든 스코빌 지수를 k 이상으로 만들 수 없는 경우(힙의 원소가 1개가 남고, 해당 원소의 값이 K 미만인 경우) # 시간복잡도 # O(nlogn) import heapq def ..
2022.07.26 -
[프로그래머스 LEVEL2 : 카펫][python]
https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 아이디어 # 사각형의 가로 길이를 x, 세로길이를 y라고 하면, 식1) 2x+2(y-2)=brown(둘레의 길이)이고, 식2) (x-2)*(y-2) = yellow(내부 사각형 넓이)이다. # 따라서 식2를 y에 대해 정리하면, y = yellow / (x-2) + 2 이다. # 앞서 구한 y를 다시 식1에 대입하여 x를 구하는데 이때 x는 y보다 크거나 같은 지에 대한 조건을 확인한다. # ..
2022.07.25 -
[프로그래머스 LEVEL2 : 문자열 압축][python]
https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 아이디어 # 최적화 방안을 찾아봤으나, 마땅한 길이없어 1개,2개...k개 단위로 각각 비교 # 첫번째 반복문: 1개 단위부터 len(s)//2개 단위까지 ex) 8글자면 최대압축은 4개단위까지 # 두번째 반복문: i를 기준으로 i-k,i+k 인덱스로 비교 ex) 2개단위(k=2)면 s[0:2]와 s[2:4]를 비교(i=2) # 비교결과 반복되면, cnt를 누적 # 반복되지 않으면, 이전의 반..
2022.07.18