목록Algorithm/문제 풀이 (54)
개발자-H 입니다.
https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 백트랙킹을 이용하여 규칙에 맞는 암호문을 만들어 내는 문제이다. 최적화는 비트마스킹을 활용했다. Java String => 248ms 비트마스킹 => 140ms 코드는 비트마스킹 풀이법이다. import java.io.*; import java.util.*; public class Main { private static BufferedReader br = new BufferedReader(new Inp..
https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net 백트래킹 + 배열 조작 문제이다. 처음에는 각 DP 마다 모든 배열을 검사하도록 수행했더니 시간 초과가 나버렸다. 배열 검사는 가장 마지막에 오는 DP만 검사하여 조건에 맞는 색종이를 사용했는지 확인했다. import java.io.*; import java.util.*; public class Main { private static BufferedReader br = new Buffer..
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net DP + 백트래킹 문제이다. 주어진 연산자 횟수를 이용하여 연산자 순서를 정한다 DP 깊이가 숫자 -1 일 경우 조합된 연산자 순서를 이용하여 최소 값과 최대 값을 갱신한다. 아래의 풀이로 연산자 끼워넣기 (2) 통과 할 수 있다(날먹) import java.io.*; import java.util.*; public class Main { p..
https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 백트렉킹 활용 문제이다 문제에서 제시하는 부분 수열의 의미를 잘 파악해야 된다. Arr = [1,1,1,1] S = 1 인 경우 부분 수열의 개수는 [1]을 갖고 있는 4개가 된다. 처음에 visit 배열로 중복성 확인을 해가며 풀었는데 구지 그럴 필요가 없었던 문제였다. import java.io.*; import java.util.*; public class..
https://programmers.co.kr/learn/courses/30/lessons/86048 코딩테스트 연습 - 7주차 사회적 거리두기를 위해 회의실에 출입할 때 명부에 이름을 적어야 합니다. 입실과 퇴실이 동시에 이뤄지는 경우는 없으며, 입실 시각과 퇴실 시각은 따로 기록하지 않습니다. 오늘 회의실에는 programmers.co.kr 단순한 구현 같은데 생각보다 잘 안풀렸던 문제 결국 n^3으로 풀었는데 다른 사람 풀이를 보니 n^2으로도 쉽게 풀렸던 문제 덕분에 나의 통과 속도는 그들에 비해 최대 100배 정도 느리게 돌아갔다 ㅡ 시간 제한이 빡세게 걸려있었다면 통과 못했을 텐데 다른 사람 정답을 보고 연구 좀 해봐야겠다 ㅠㅠ 테스트 1 〉 통과 (1.63ms, 69.7MB) 테스트 2 〉 ..
https://programmers.co.kr/learn/courses/30/lessons/85002 코딩테스트 연습 - 6주차 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr 주어진 조건에 따라 복서에게 우선 순위를 부여하여 정렬하면 된다. 우선 순위 정렬는 PriorityQueue를 사용하여 정렬하였다. import java.util.*; class Solution { public int[] solution(int[] weights, String[] head2head) { List boxers = n..
https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 큐를 이용하여 주어진 조건대로 구현하면 된다 예제 이해가 힘들었는데 간략하게 설명하자면 예제 6 0 1 1 9 1 1 1 문서의 개수는 6개이고 0번쨰에 있는 문서가 언제 출력 알려달라는 것이였다. 여기서 0번째란 1 1 9 1 1 1 이므로 돌려보면 1 9 1 1 1 1 9 1 1 1 1 1 (출력) 1 1 1 1 1 (출력) 1 1 1 1 (출력) 1 1 1 (출력) 1 1 (출력) 5번째 출력이..
https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 색종이 만들기 문제에서 백트렉킹이 섞인 문제이다. 재귀는 스텍의 성질을 가지고 있는데 이를 이용하여 괄호 치기를 하면 된다. import java.io.*; import java.util.*; public class Main { public static final BufferedReader br = new BufferedReader(new InputStreamReader(System...