🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/42583# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 💡 접근법트럭을 큐(다리)에 차례로 진입시키는데, 이때 시간(second)을 기준으로 한다.시간을 기준으로 총 두 가지의 작업을 수행하며, total_weight 변수를 통해 큐(다리)의 전체 무게를 체크한다.큐에서 0번째 트럭이 다리를 건넜는지 확인한다.만약 다리를 건넜다면, 큐에서 해당 트럭을 삭제한다. (total_weight에서 해당 트럭의 무게도 뺀다)경과 시간 = 현재 시간 - 진입 시간을 확인하여 트럭이 다리..
프로그래머스
🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 💡 접근법DP의 top-down 방식으로 풀었다.triangle을 모두 탐색하면서 값을 업데이트 해나갔다. 현재 위치까지 도달하는 모든 경로 중 최댓값을 저장해야 한다. 따라서 위의 칸의 대각선 두 값 중 더 큰 값을 선택하여 더한다. 만약 대각선에 값이 존재하지 않는다면, 이는 삼각형의 범위를 벗어난 것이므로 이를 따로 처리해야 한다. 점화식은 dp[i][j] = dp[i-1][j-1] + dp[i-1][j] (i>=1, ..

🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/42898# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 🚀 시행착오def solution(m, n, puddles): # m: 열, n: 행 answer = 0 dict = {} # key: 경로, value: 경로 개수 visited = [[False] * (m+1) for _ in range(n+1)] dx = [0, 1] # 아래쪽, 오른쪽 dy = [1, 0] def DFS(y, x, cnt): visi..
🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/42746# 💡 접근법주어진 숫자 리스트를 이어붙여 만들 수 있는 모든 경우의 수를 탐색하면 시간 초과가 발생한다. 따라서 문자열 정렬을 활용해 가장 큰 수를 만들어야 한다. 문자열 정렬의 특성- 문자열 정렬은 숫자의 크기나 자릿수와 상관없이 문자 순서대로 사전식 정렬된다.- 문자열의 길이가 다를 때, 더 짧은 문자열은 사전식 정렬에서 먼저 온다. ex) "1"과 "10"을 비교하면, "1"이 "10"의 부분 문자열이므로 "1"이 "10"보다 앞에 정렬된다. 올바른 정렬을 수행하기 위해 자릿수를 맞춰서 비교해야 한다.문자열 정렬은 사전식 정렬로 수행되므로, 이는 [1, 10] ..
🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 💡 접근법언제 주식가격이 떨어졌는지 알기 위해서는 타겟 하나에 대해 이후의 주식 가격을 매번 비교해야 한다. 즉, 가격이 떨어지지 않는 기간(초 단위)을 각각 계산한다. 하지만 이러한 접근법으로 구현할 경우 시간 복잡도는 O(N²)이다. 😎 내 코드def solution(prices): answer = [] for i, p in enumerate(prices): seconds = 0 ..
🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 👀 배운 코드1. DFS 기반 코드재귀 방식으로 모든 경우의 수에 대한 계산을 수행한다.def solution(numbers, target): global answer answer = 0 def DFS(i, sum): global answer if i == len(numbers): if sum == target: answer += ..
🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 💡 접근법progresses 리스트 자체를 큐로 사용한다. 이때 while 문을 통해 진도(progress)에 작업 속도(speed)를 계속해서 더해간다.만약 첫 번째 요소의 진도율이 100% 이상일 경우, 이는 배포가 가능한 작업이 된다. 따라서 첫 번째 요소 이후에도 배포가 가능한 작업이 있는지 카운팅하고, 해당 요소들은 큐에서 삭제한다. 이때 큐에서 삭제하는 작업의 효율성을 위해 deque()를 사용한다.💡 deque..
🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/42628# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 접근법처음에는 min heap과 max heap을 각각 생성하고 이를 통해 최댓값, 최솟값을 찾아주려고 했다. 하지만 이렇게 하면 일일히 min heap에서 삭제된 값을 max heap에서도 찾아 삭제해야 한다는 단점이 있다. 따라서 하나의 힙을 생성하여 문제를 해결한다. 최소 힙에서 최댓값을 구하는 방법은 다음과 같다.힙 자료구조 또한 리스트 기반이기 때문에 max(heap..