본문 바로가기

ALGORITHMS/SOLUTION11

[Programmers] 큰 수 만들기 1. 개념 : 탐욕법 (Greedy Algorithm) 현재 상황에서 가장 좋은것(최선의 선택)만을 선택하는 알고리즘. 매 순간 가장 좋아 보이는 것을 선택하며, 최종 결과가 최적해 보장 X (작성 후 검증 필요) 대표 유형 : 거스름돈 문제, 다익스트라 알고리즘 2. 풀이 2.1 조합 활용 - 코드 from itertools import combinations def solution(number, k): lst = combinations(number,len(number)-k) return "".join(max(lst)) 제한 조건이 1,000,000 이기 때문에 시간 초과가 날 것을 예상했지만, 가장 단순하기 때문에 풀어보았다. k개를 제거한 뒤, 가장 큰 수를 구하는 것이기 때문에, 뽑는 순서는 중요.. 2024. 4. 6.
[PYTHON : 프로그래머스] 전화번호 목록 목차 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내코드 def solution(phone_book): phone_book.sort() for num in range(len(phone_book)-1): if phone_book[num+1].startswith(phone_book[num]): return False return True 만약에 전화번호가 ["999","123","12345"] 라고 할 때, 정렬을 하면 ["123","12345","999"] 로 "!23"을 prefix로 가지고 있는 "!2345"는 "123"의 뒤에 위치하게 된다. .. 2023. 7. 23.
[JAVA: 프로그래머스] 햄버거 만들기 목차 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내풀이 import java.util.Stack; class Solution{ public int solution(int[] ingredient) { Stack stack = new Stack(); int answer = 0; for (int i : ingredient) { stack.push(i); int sz = stack.size(); if (sz>=4 && stack.peek() == 1) { if (stack.get(sz-2) == 3 && stack.get(sz-3) == 2 && sta.. 2023. 7. 22.
[백준 : PYTHON] 1715_카드정렬하기 문제링크 : https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 문제 : 풀이과정 문제풀이 로직 결과적으로 작은 값부터 더해야 최소 값을 만들 수 있으므로, 우선순위 큐를 활용. 최소 값 2개를 꺼낸 뒤, 이들을 더한 값을 다시 리스트에 추가 & 값 누적 하면 된다. 최소 값 두 개를 더한 값을 리스트에 다시 추가했기 때문에, queue의 길이가 1일 때까지 누적 값을 구한다. (누적 값에는 선 반영이 되어있기 때문) 내 풀이 imp.. 2023. 5. 25.
[프로그래머스:JAVA] 2차원으로 만들기 문제링크 : 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 : 2차원으로 만들기 문제 설명 정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요. num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다. num_list n result [.. 2023. 5. 24.
[프로그래머스:PYTHON] 공던지기 문제링크 : 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 : 공던지기 문제 설명 머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요. 제한사항 2 < numbers의 길이 < 100 0 < k < 1,000 numbers의 첫 번째와 마지막 번호는 실제로 바로 옆에 있습니다... 2023. 5. 24.
[프로그래머스: PYTHON] 배열회전시키기 목차 문제링크 : 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 : 배열 회전시키기 문제 설명 정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 3 ≤ numbers의 길이 ≤ 20 direction은 "left" 와 "right" 둘 중 하나입니다. 입출력 예 numbers kdirection result [1, 2, 3] "right" [3, 1, 2] [4, 455, 6.. 2023. 5. 24.
[백준:JAVA] 단어수학 목차 문제링크 : https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 문제 : # 1339_단어수학 *** ## 문제 설명 민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다. 단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0부터 9까지의 숫자 중 하나로 바꿔서 N개의 수를 합하는 문제이다. 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 .. 2023. 5. 23.
[백준:PYTHON] 단어 수학 목차 문제링크 : https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 문제 : # 1339_단어수학 *** ## 문제 설명 민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다. 단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0부터 9까지의 숫자 중 하나로 바꿔서 N개의 수를 합하는 문제이다. 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 .. 2023. 5. 23.