자료구조
[python] 프로그래머스 Lv 1 - 명예의 전당 (1)
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 시뮬레이션 구현 자료구조 💡 풀이 이 문제는 리스트에 가장 작은 값을 뽑아내는 문제이다. 만약 리스트에 용량이 다 찾다면 현재 값과 가장 작은 값을 비교하여 가장 작은 값을 빼고 새로운 값을 넣어야 한다. 나는 리스트를 정렬하고 가장 작은 값을 뽑아내는 방식으로 풀었지만, min 함수를 사용하면 더 간단하게 풀 수 있었다. 💻 코드 """ [0, 300, 40, 300, 20, 70, 150, 50, 500, 1000] 0 -> 0 300 0 -> 0 300 40 0 -> 0 300 3..
[python] 프로그래머스 Lv1 - 추억 점수
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📂 분류 구현 자료구조 💡 풀이 이 문제는 map 자료구조를 알면 쉽게 풀 수 있다. name과 yearning의 길이가 같기 떄문에 리스트를 순회하면서, 이름과 점수를 저장한다. 그리고 photo 이중 리스트를 순회하면서 dic에 있는 이름이라면 그 점수를 score에 더한다. 💻 코드 def solution(name, yearning, photo): answer = [] dic = {} # 추억 점수 저장 O(N) for i in range(len(name)): dic[name[i]] = y..
[Python] 프로그래머스 Lv1 - 달리기 경주
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📂 분류 구현, 자료구조 💡 풀이 제한사항을 고려하지 않고 list의 index 와 swap을 이용해서 문제를 해결했으나 시간초과가 발생했다. 시간초과 이유는 최대 1,000,000 * 50,000 = 500억 이므로 O(N^2)의 시간복잡도를 가지는 알고리즘은 사용할 수 없었다. player의 순위를 dictionary에 저장하여 swap을 사용했다. 💻 코드 def solution(players, callings): rank = {key : i for i, key in enumerate(pl..
[자바] 프로그래머스 - 큰 수 만들기 (Level 2)
🔗 문제 링크 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 📝 문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. ⚠️ 제한사항 number는 1자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수..
[C++] 프로그래머스 - 더 맵게 (Level 2)
🔗 문제 링크 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 📂 분류 Heap 자료구조 💡 풀이 전형적인 우선순위 큐를 활용해서 푸는 문제다. 주어진 스코빌 지수들 중에서 가장 작은 스코빌과 두 번째로 작은 스코빌을 뽑아 K 이상일 때까지 수행해야 하기 때문에 최소 힙을 이용해서 풀면 된다. 📌 주의할 점 pq의 원소 두 개를 뽑기 때문에 로직을 수행할 때 pq.size()는 2보다 커야 한다. 💻 코드 #include using namespace std; int solution(vector s..
[자바] 프로그래머스 - 다리를 지나는 트럭
🔗 문제 링크 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 📂 분류 시물레이션 큐 💡 풀이 문제 설명에 트럭의 전진이 안나와있어서 이해하는데 좀 오래걸렸는데 질문목록을 보니 나만 그런게 아니였다. 다리를 큐로 선언하고, 트럭들을 큐에 넣고 빼주는 것을 구현하면 된다. 큐에 트럭을 넣을 수 있는 조건은 큐가 비어있는 경우 큐가 가득차지 않은 경우 무게가 초과 되지않은 경우 이렇게 3가지가 있다. 위 조건이 만족하지 않으면 다음 트럭이 다리는 지날 수 있도록 0을 넣어주면서 poll..