Algorithm(116)
-
[Python/solved.ac] 2193번 : 이친수
문제 0과 1로 이루어진 수열이 있다. 이때, 이 수열이 이친수인지 아닌지 구하여라. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 이친수의 길이 N은 90보다 작거나 같은 자연수이다. 입력 첫째 줄에 이친수의 길이 N(1 ≤ N ≤ 90)이 주어진다. 출력 첫째 줄에 길이가 N인 이친수의 개수를 출력한다. 아이디어 이 문제는 피보나치 수열의 변형 문제로 볼 수 있다. 이친수는 0으로 시작하지 않으므로, 첫 번째 자리는 반드시 1이다. 또한, 1이 두 번 연속으로 나타나지 않으므로, 두 번째 자리는 0이어야 한다. N = 1일 때, 이친수는 1 하나이다. N = 2일 때, 이친수는 10 하나..
2023.09.18 -
[Python/solved.ac] 6064번 : 카잉 달력
https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net 문제 최근에 ICPC 탐사대는 남아메리카의 잉카 제국이 놀라운 문명을 지닌 카잉 제국을 토대로 하여 세워졌다는 사실을 발견했다. 카잉 제국의 백성들은 특이한 달력을 사용한 것으로 알려져 있다. 그들은 M과 N보다 작거나 같은 두 개의 자연수 x, y를 가지고 각 년도를 와 같은 형식으로 표현하였다. 그들은 이 세상의 시초에 해당하는 첫 번째 해를 로 표현하고, 두 번째 해를 로 표현하였다. 의 다음 ..
2023.09.15 -
[프로그래머스 LEVEL1 : 카드 뭉치][python]
https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(cards1, cards2, goal): answer = '' #1. 리스트 뒤집기(스택) cards1 = list(reversed(cards1)) cards2 = list(reversed(cards2)) #2. 스택에서 하나씩 꺼내어 goal이 만들어지는 경우인지 체크 for goal_element in goal: answer = "Yes" if len(cards1) >..
2023.06.27 -
[프로그래머스 LEVEL2 : 피로도][python]
https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import itertools def solution(k, dungeons): answer = 0 #1. dungeons의 순열 생성 dungeons_permutation = list(itertools.permutations(dungeons)) #2. k >= d[i][0] 인 경우, k -= d[i][1] 후 answer += 1 for dungeons in dungeons_permutation..
2023.06.23 -
[프로그래머스 LEVEL2 : 뉴스 클러스터링][python]
https://school.programmers.co.kr/learn/courses/30/lessons/17677# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import copy #1 def make_set(string): set_str = [] string = list(string.lower()) for i in range(1, len(string)): targets = string[i-1:i+1] if 97
2023.06.22 -
[프로그래머스 LEVEL1 : 과일 장수][python]
https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(k, m, score): answer = 0 #1 점수 오름차순 정렬 score.sort(reverse=True) #2 m개 슬라이싱으로 점수 계산 for i in range(0, len(score)-(m-1), m): answer += score[i+m-1] * m return answer - 아이디어 #1. 점수가 최대가 되기위해서는 점수가 작은 상품이 한 박스에 모여..
2023.06.22