본문 바로가기
반응형

기출13

[이코테][기출] 05. 볼링공 고르기 A, B 두 사람이 볼링을 치고 있습니다. 두 사람은 서로 무게가 다른 볼링공을 고르려고 합니다. 볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고, 공의 번호는 1번부터 순서대로 부여됩니다. 또한 같은 무게의 공이 여러개 있을 수 있지만, 서로 다른 공으로 간주합니다. 볼링공의 무게는 1부터 M까지의 자연수 형태로 존재합니다. 문제 N개의 공의 무게가 각각 주어질 때, 두 사람이 볼링공을 고르는 경우의 수를 구하는 프로그램을 작성하세요. 입력 조건 첫째 줄에 볼링공의 개수 N, 공의 최대 무게 M이 공백으로 구분되어 각각 자연수 형태로 주어집니다. (1 2022. 10. 18.
[이코테][기출] 04. 만들 수 없는 금액 N개의 동전이 주어질 때 조합으로 만들 수 없는 양의 정수금액 중 최솟값을 구해야 한다. 1. for (i=1 to 1,000,000)으로 정수를 하나씩 증가시킨다. 2. N개의 동전을 순서대로 빼본다. (미리 오름차순 정렬을 해놓고 큰수부터 빼자.) 3. 빼서 0이되면 만들 수 있는 정수이므로 i를 증가시킨다. 4. 빼서 0보다 크면 나머지를 계속 뺀다. 5. 빼서 음수면 다음 수를 뺀다. 6. 다 빼도 수가 남아 있으면 정답 import java.util.Scanner; import java.util.Arrays; // [이코테](그리디) 04. 만들 수 없는 금액 public class Main { static int N; static int A[]; public void InputData() { .. 2022. 10. 18.
[이코테][기출] 03. 문자열 뒤집기 모든 숫자를 전부 같게 만드는 것이 목적이다. 따라서 전부 0으로 바꾸는 경우와 전부 1로 바꾸는 경우 중 더 적은 횟수를 가지는 경우를 구하면 된다. 모두 0으로 만드는 경우 모두 1로 만드는 경우 두번째 숫자부터 그 다음 숫자랑 비교를 해서 수가 달라지면 count를 증가시킨다. import java.util.Scanner; // [이코테](그리디) 03. 문자열 뒤집기 public class Main { static int A[]; static int count0 = 0; // 전부 0으로 바꾸는 경우 static int count1 = 0; // 전부 1로 바꾸는 경우 public void InputData() { Scanner sc = new Scanner(System.in); String s .. 2022. 10. 18.
[이코테][기출] 02. 곱하기 혹은 더하기 숫자 문자열의 왼쪽부터 오른쪽까지 하나씩 숫자끼리 연산을 해서 가장 큰수를 구하라. 연산은 '+'와 'x' 두개만 사용할 수 있다. 모든 연산은 왼쪽부터 순서대로 이루어진다. 문자열을 정수형 배열에 변환해서 담는다. for문으로 숫자를 하나씩 확인하면서 만약 0이면 다음에 '+', 아니면 'x'를 오게해서 Queue에 저장한다. 다음 for문으로 큐에서 연산자를 하나씩 빼면서 숫자 연산을 해서 ans에 누적시킨다. ----------------------------------------------------------------------------------------------- 첫번째 수는 ans 변수에 저장한다. 그 뒤 숫자부터 for문을 돌리면서 두 수중 하나라도 1이나 0이면 두 수를 '+' .. 2022. 10. 18.
[이코테][기출] 01. 모험가 길드 모험가가 N명 있다. 공포도가 X인 모험가는 반드시 X명 이상의 모험가 그룹이 필요하다. 최대 몇명의 모험가 그룹을 만들 수 있는가? 배열 A[N]을 정의해서 공포도를 저장한다. 오름차순으로 정렬한다. for (i = N to 0) A[N]의 공포도만큼 i를 전진하고, count++한다. (10분 걸림) 오름차순으로 정렬하는 것까지는 생각함. 하지만 공포도가 낮은 것부터 확인해서 일단 그룹에 모험가를 포함시키고 그 수와 현재 확인중인 공포도를 비교하는 로직은 생각하지 못함. --------------------------------------------------------------------------------------------- 공포도를 기준으로 오름차순으로 정렬을 한다. 공포도가 낮은 모험가.. 2022. 10. 18.
[백준] 14496번 - 그대, 그머가 되어 (Java) https://www.acmicpc.net/problem/14496 14496번: 그대, 그머가 되어 첫째 줄에 머호가 바꾸려 하는 문자 a와 b가 주어진다. 둘째 줄에 전체 문자의 수 N과 치환 가능한 문자쌍의 수 M이 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ M ≤ 10,000) 이후 M개의 줄에 걸쳐 치환 가능한 문 www.acmicpc.net 문자열 a를 b로 바꾸는 최소 치환 횟수를 구하는 문제이다. 문자열 관련 문제처럼 보이나 실상은 문자열 a에서 b로 가는 최단경로를 구하는 문제이다. 우선순위 큐와 다익스트라 알고리즘을 사용해서 풀면된다. 인접리스트 방식 둘로 나눠서 풀어보자. 1. class Node를 구성하자. cost로 오름차순으로 PQ를 구성한다. 2. 방문배열(boolean v.. 2022. 10. 8.
[백준] 17179번 - 케이크 자르기 (Java) https://www.acmicpc.net/problem/17179 17179번: 케이크 자르기 첫 번째 줄에 자르는 횟수가 담긴 목록의 길이 N과 자를 수 있는 지점의 개수 M, 그리고 롤 케이크의 길이인 정수 L이 주어진다. (1 ≤ N ≤ M ≤ 1,000, 1 < L ≤ 4,000,000) 다음 M줄에 걸쳐 자를 수 있는 www.acmicpc.net N : 자르는 횟수 ( 2022. 10. 7.
[백준] 1654번 - 랜선 자르기 (Java)(○) https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net K개의 길이가 다른 랜선을 가지고 있다. 이를 잘라서 같은 길이의 N개의 랜선을 만들어야 한다. N개보다 많이 만드는 것도 N개를 만드는 것에 포함된다. ( 2022. 10. 6.
[백준] 2805번 - 나무 자르기 (Java) https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 나무를 자르는데 총 N개의 나무를 높이 H로 잘라서 남은 길이의 합이 M이상이 되는 H의 최대값을 구하라. - N : 나무의 수 ( 1 2022. 10. 5.
반응형