목록그리디 (15)
어흥
문제 링크: www.acmicpc.net/problem/6443 6443번: 애너그램 N개의 영단어에 대한 모든 가능한 애너그램을 출력한다. 각각의 영단어에 대한 애너그램을 출력할 때, 알파벳 순서로 중복되지 않게 출력한다. www.acmicpc.net 1. 주의할 점 - 문자열의 길이가 최대 몇인지 모른다 -> 배열을 이용해서 풀기 애매하다 - 문자열의 길이가 최대 몇인지 모르므로 Set을 사용하기 애매하다 -> TLE나 메모리초과가 날 수도 있다 2. 구현 - 그리디를 통해 접근한다 - 문자열을 입력받을 때, Sort 작업 수행과 Len을 설정한다 - DFS() 함수를 통해 idx가 문자열 길이-1일때 문자열을 출력한다 - For문을 통해 현재 바꾸려고 하는 위치의 문자와 다른 문자가 같은 숫자라면 ..
문제 링크: https://www.acmicpc.net/problem/2549 2549번: 루빅의 사각형 첫 번째 줄에는 움직이는 횟수를, 두 번째 줄부터는 한 줄에 하나씩 타일을 움직이는 방법을 순서대로 출력한다. 이때, 격자판의 i번째 행을 k칸 움직였다면 정수 1과 i와 k를 빈칸을 사이에 두고 www.acmicpc.net 1. 주의할 점 - 푸는 방법이 여러가지 존재하지만, 여기서는 백트레킹을 활용해서 해결한다 - 한 열/행을 1~3칸 이동하는것은 전부 1번 옮긴것과 같다 2. 구현 - 현재 배열의 상태(Arr[][])와 최종적으로 원하는 배열의 상태(Corr[][])를 비교하여 틀린 개수를 반환하는 Cal() 함수를 구현한다 - Cal() 함수를 통해 다른 개수를 반환 받은 후, 다음과 같은 가..
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWAe7XSKfUUDFAUw SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 2가지의 조건을 통해 TLE를 예방한다 1) 저울에 올릴 때, 오른쪽의 총합 > 왼쪽의 총합이 된다면 무조건 왼쪽에만 추가한다 2) 남은 저울을 모두 오른쪽에 올려도 오른쪽의 총합
문제 링크: https://www.acmicpc.net/problem/13334 13334번: 철로 문제 집과 사무실을 통근하는 n명의 사람들이 있다. 각 사람의 집과 사무실은 수평선 상에 있는 서로 다른 점에 위치하고 있다. 임의의 두 사람 A, B에 대하여, A의 집 혹은 사무실의 위치가 B의 집 www.acmicpc.net 1. 주의할 점 - N^2만큼 확인하는 코드를 작성하지 않도록 한다. 우선순위큐나 Set을 사용한다(물론 중복값이 있을 수 있으므로 멀티셋 사용) - 각각에 대한 정렬방식을 미리 정해둔다 2. 구현 - 입력받는 수를 우선순위큐 PQ에 저장하며, 도착지점의 오름차순이 1순위이며 시작지점의 오름차순이 2순위다(도착지점이 같다면) - 우선순위큐에서 1개씩 빼며, 시작지점과 도착지점의 ..
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIseXoKEUcDFAWN SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 구매하는 옷이 3벌 미만인 경우 예외 처리를 해준다 2. 구현 - 입력받은 가격을 내림차순으로 정렬한다 - 앞에서부터 3개씩 묶고, 그 중 가장 낮은 가격은 제외한다 - 마지막에 3개로 안 묶어질 경우, 남은 옷의 가격을 모두 더한다 import java.io.BufferedReader; import java.io.InputStreamReader; import jav..
문제 링크: https://www.acmicpc.net/problem/1826 1826번: 연료 채우기 첫째 줄에 주유소의 개수 N(1 ≤ N ≤ 10,000)가 주어지고 두 번째 줄부터 N+1번째 줄 까지 주유소의 정보가 주어진다. 주유소의 정보는 두개의 정수 a,b로 이루어 져 있는데 a(1 ≤ a ≤ 1,000,000)는 성경이의 시작 위치에서 주유소 까지의 거리, 그리고 b(1 ≤ b ≤ 100)는 그 주유소에서 채울 수 있는 연료의 양을 의미한다. 그리고 N+2번째 줄에는 두 정수 L과 P가 주어지는데 L(1 ≤ L ≤ 1,000,000)은 성경이 www.acmicpc.net 1. 주의할 점 - 입력 받는 주유소의 정보가 거리순이 아니다 2. 구현 - 주유소의 정보를 우선순위 큐 PQ2에 입력받..
문제 링크: https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 10개이고, 수의 최대 길이는 8이다. 서로 다른 문자는 서로 다른 숫자를 나타낸다. www.acmicpc.net 1. 주의할 점 - 알파벳이 최대 10개 -> A~Z 사이 임의의 10개가 최대다 2. 구현 - 첫 번째 방법: 브루트포스(DFS)를 이용하여 구현한다 - 알파벳을 모든 경우로 배치하는 방법 : 10! -> 약 360만이므로 2초내에 충분히 계산 가능하다 - 두 번째 방법: 그리디 알고리즘으로 ..