본문 바로가기

알고리즘, 문제해결103

[프로그래머스] 여행경로 문제 링크: https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 여러 공항이 있고, 출발지와 도착지가 적힌 티켓이 tickets 배열에 주어집니다. Tickets 내의 모든 티켓들을 각각 한 번씩만 사용하여, 주어진 모든 도시를 방문하는 경우의 방문 순서를 구하는 문제입니다. 모든 도시를 방문할 수 없는 경우는 입력으로 주어지지 않으며, 가능한 경우가 여러 가지 존재하는 경우, .. 2021. 10. 2.
[백준 1856번] 웜홀 난이도: 골드 III 문제 링크: https://www.acmicpc.net/problem/1865 1865번: 웜홀 첫 번째 줄에는 테스트케이스의 개수 TC(1 ≤ TC ≤ 5)가 주어진다. 그리고 두 번째 줄부터 TC개의 테스트케이스가 차례로 주어지는데 각 테스트케이스의 첫 번째 줄에는 지점의 수 N(1 ≤ N ≤ 500), www.acmicpc.net 이 문제는 최단거리 문제인데, 노드와 노드 사이의 거리가 음수인 경우가 존재하는 특이한 경우입니다. 이를 위해 벨만-포드 (Bellman-ford) 알고리즘을 사용해야 합니다. 벨만-포드 알고리즘은 예전에 최단거리 알고리즘을 다루면서 언급한 적이 있는데, 언급만 하고 자세히 다루지는 않았습니다. 알고리즘에 대한 설명은 여기를 참고하였습니다. 총 노드의.. 2021. 10. 2.
[백준 1943번] 동전 분배 난이도: 골드 III 문제 링크: https://www.acmicpc.net/problem/1943 1943번: 동전 분배 세 개의 입력이 주어진다. 각 입력의 첫째 줄에 동전의 종류 N(1≤N≤100)이 주어진다. 각 입력의 둘째 줄부터 N+1째 줄까지 각각의 동전의 금액과 개수가 빈 칸을 사이에 두고 주어진다. 단, 원장선 www.acmicpc.net DP를 통해 접근할 수 있는 문제입니다. 그리디로 왜 안 되는지는... 잘 모르겠네요 ㅠ 모든 동전의 값의 합을 먼저 구하고, 이것이 홀수라면 반으로 나눌 수 없으므로 0을 출력하고 넘어갑니다. 짝수라면, 총 값의 반을 최대 기준으로, 만들 수 있다면 해당 테이블에 1을 기록하며 진행합니다. 이전 인덱스의 값을 참조하여 진행하기 때문에 탑-다운 방식으로.. 2021. 9. 30.
[백준 1823번] 수확 난이도: 골드 III 문제 링크: https://www.acmicpc.net/problem/1823 1823번: 수확 첫째 줄에 벼의 개수 N(1 ≤ N ≤ 2,000)이 주어지고 두 번째 줄부터 N+1번쨰 줄까지 벼의 가치 v(i) (1 ≤ v(i) ≤ 1,000) 가 주어진다. www.acmicpc.net 벼가 한 줄로 쭉 세워져 있고, 벼의 가치는 각각 입력으로 들어옵니다. 벼를 나중에 수확할수록 이익을 더 얻기 때문에, 끝까지 가 봐야 알 수 있으므로 그리디 방식으로는 해결할 수 없습니다. 이 문제의 경우, DP를 이용하여 접근할 수 있습니다. 보통 DP 문제의 경우 맨 마지막 값이 정답이 되는데, 이 문제의 경우 배열의 앞과 뒤를 좁혀 가며 탐색을 하므로, 중간의 어느 지점이 맨 마지막에 탐색하.. 2021. 9. 29.
[프로그래머스] 최소직사각형 문제 링크: https://programmers.co.kr/learn/courses/30/lessons/86491 코딩테스트 연습 - 8주차 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr 이번 주 문제는 너무 쉬웠던 것 같아서 아쉽네요. 주어진 모든 명함을 어떻게든 겹쳤을 때, 명함을 모두 담을 수 있는 지갑의 크기가 최소가 되도록 하면 됩니다. 명함에서 주어진 자체적인 가로, 세로의 구분은 의미가 없기 때문에 저는 긴 쪽을 가로, 짧은 쪽을 세로라고 정의하였습니다. 이후 주어진 모든 명함에 대해 가로의 최댓값과 세로의 최댓값을 각각 구하고,.. 2021. 9. 27.
[백준 1727번 문제] 커플 만들기 난이도: 골드 III 문제 링크: https://www.acmicpc.net/problem/1727 1727번: 커플 만들기 첫째 줄에 n, m(1≤n, m≤1,000)이 주어진다. 다음 줄에는 n명의 남자들의 성격이 주어진다. 그 다음 줄에는 m명의 여자들의 성격이 주어진다. 성격은 1,000,000이하의 자연수이다. www.acmicpc.net 문제를 이해하는데 다소 어려움이 있었는데, 문제를 요약하면 다음과 같습니다. 커플의 수는 최대여야 한다. 즉 남자의 수 n, 여자의 수 m이 있을 때, 커플의 수 = min(n, m)이 된다. 커플을 만들었을 때, 성격의 차이를 각각 구하고, 이 값을 누적한다. 누적한 값이 최소가 되도록 하라. 다이나믹 프로그래밍 문제입니다. 입력을 두 배열 men, wome.. 2021. 9. 26.