본문 바로가기

Programming/코딩 문제 풀이5

[프로그래머스 Lv.2] 혼자 놀기의 달인 (파이썬 풀이) 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] * cards의 원소는 "자연수"이다. 요약: 모든 그룹의 상자 개수를 구하고 가장 큰 수와 두 번째로 큰 수를 곱하여 반환한다. 인덱스 순서대로 cards 배열의 원소를 확인한다. 이때, 자연수가 아닌 0인 원소는 열어본 상자로 간주한다. 열어본 상자가 아니라면 해당 원소값을 다음 확인할 인덱스로 정하며 해당 원소는 열어봤다는 의미로 0으로 바꾼다. 열어본 상자를 발견할 때까지 1~2를 반복하며 해당 작업의 수행 횟수를 저장한다. 열어본 상자를 발견하면 answer 변수에 이번 회차 작업.. 2022. 10. 28.
[프로그래머스 Lv.2] H-Index (파이썬 풀이) 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] * 논문별 인용 횟수 배열(citations)을 내림차순 정렬한 배열의 인덱스는 해당 논문의 인용 횟수 이상의 인용 횟수를 가진 논문의 수와 같다. citations을 내림차순 정렬하여 인덱스 순서대로 인덱스 값이 인용 횟수보다 크거나 같은지 확인한다. 인덱스 값이 인용 횟수보다 큰 경우를 발견하면 해당 인덱스를 반환한다. 발견하지 못한 경우 전체 논문의 수를 반환한다. [코드] def solution(citations): for i, j in enumerate(sorted(citation.. 2022. 10. 28.
[프로그래머스 Lv.2] 카펫 (파이썬 풀이) 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이 2] * 카펫의 가로, 세로 각각의 격자의 수는 모든 격자의 수의 약수이다. * 즉, 모든 격자의 수 ÷ 세로 격자의 수 = 가로 격자의 수 * 노란색 격자의 수 = (카펫의 가로 격자의 수 - 2) * (카펫의 세로 격자의 수 - 2) * 노란색 겉 테두리 1줄은 갈색 격자로 이루어져야 하므로 카펫의 가로, 세로 격자의 최소 수는 3 이상이다. 갈색과 노란색 격자의 수를 모두 더하여 총 합을 구한다. 3이상, 총 합 이하의 수를 차례로 대입하여 다음 식이 성립하는 약수 y를 찾는다. {(총.. 2022. 10. 26.
[프로그래머스 Lv.2] 큰 수 만들기 (파이썬 풀이) 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] * 이 문제는 시간 복잡도를 최소화해야 함. * 탐욕법(Greedy) 유형의 문제라는 것이 힌트. * combinations나 max 함수로는 제한 시간에 맞추기 어려움. 만들고자하는 가장 큰 수의 앞자리부터 순서대로 찾기 위한 범위를 매번 설정해야 한다. 찾을 범위 시작 위치 인덱스는 0, 끝 위치 인덱스는 (number의 총 길이 - 만들고자하는 수의 총 길이)로 초기화 한다. 찾을 범위 끝 위치 인덱스+1 로 범위를 갱신하고 현재 범위 내에서 최댓값을 찾아 정답이 될 문자열 변수에 추.. 2022. 10. 25.
[프로그래머스 Lv.2] 롤케이크 자르기 (파이썬 풀이) 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] * 이 문제는 시간 복잡도를 줄이는 것이 관건인 문제. 전체 토핑의 종류와 개수를 딕셔너리로 만든다. (Hashable 하게 만들어 연산 속도를 줄이기 위함) 빈 세트을 선언한다. topping에서 마지막 토핑을 pop하여 세트에 추가하며 동시에 딕셔너리에서 해당 토핑의 개수를 1 감소시킨다. 이때, 토핑의 개수가 0인 경우 딕셔너리에서 해당 키값을 삭제한다. 이후 딕셔너리의 길이와 세트의 길이가 같으면 자르는 방법의 수를 1 증가시킨다. 딕셔너리의 길이가 세트의 길이보다 크거나 같으면 3~.. 2022. 10. 22.