soo 문제집 그리디 easy 문제 중 68문제를 풀었고, 그중 힌트를 참고한 문제 및 정리하기 위해 해당 글을 작성합니다.
| 문제번호 | 제목 | 난이도 |
|---|---|---|
| 13170번 | 떨어진 수정 | 실버 4 |
| 15904번 | UCPC는 무엇의 약자일까? | 실버 5 |
| 12782번 | 비트 우정지수 | 실버 4 |
| 17262번 | 팬덤이 넘쳐흘러 | 실버 4 |
| 17521번 | Byte Coin | 실버 4 |
| 19939번 | 박 터뜨리기 | 실버 4 |
| 1758번 | 알바생 강호 | 실버 4 |
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
double p = Double.parseDouble(st.nextToken());
int w = Integer.parseInt(st.nextToken());
bw.write((int)Math.ceil(p / w)+"");
br.close();
bw.close();
}
}
import java.io.*;
import java.util.*;
public class Main {
private static final char[] ucpc = {'U','C','P','C'};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] s = br.readLine().split(" ");
int pos = 0;
boolean isFind = false;
for (int i = 0; i < s.length; i++) {
for (int j = 0; j < s[i].length(); j++) {
if(s[i].charAt(j) == ucpc[pos]){
pos++;
}
if(pos > ucpc.length-1){
isFind = true;
break;
}
}
if(isFind){
break;
}
}
if(isFind){
bw.write("I love UCPC");
}else{
bw.write("I hate UCPC");
}
br.close();
bw.close();
}
}
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String p1 = st.nextToken();
String p2 = st.nextToken();
int count0 = 0;
int count1 = 0;
for (int j = 0; j < p1.length(); j++) {
if(p1.charAt(j) == '0' && p2.charAt(j) == '1'){
count0++;
}else if(p1. charAt(j) == '1' && p2.charAt(j) == '0'){
count1++;
}
}
int ans = count0;
ans = Math.max(ans, count1);
bw.write(ans+"\n");
}
br.close();
bw.close();
}
}
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int start = 0;
int end = 100001;
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int s = Integer.parseInt(st.nextToken());
int e = Integer.parseInt(st.nextToken());
if(s > start){
start = s;
}
if(e < end){
end = e;
}
}
int ans = start - end;
if(ans < 0){
bw.write("0");
}else{
bw.write(ans+"");
}
br.close();
bw.close();
}
}
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
long w = Long.parseLong(st.nextToken());
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
long coin = 0;
int now = 0;
for (int i = 0; i < n - 1; i++) {
if(coin == 0 && arr[i] < arr[i+1]){
coin = w / arr[i];
w -= coin * arr[i];
}
if(arr[i] > arr[i+1]){
w += coin * arr[i];
coin = 0;
}
}
w += coin * arr[n-1];
bw.write(w+"");
br.close();
bw.close();
}
}
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int sum = 0;
for (int i = 0; i < k; i++) {
sum += (i+1);
}
if(n < sum){
bw.write("-1");
}else{
int ans = k-1;
n -= sum;
if(n%k != 0){
ans++;
}
bw.write(ans+"");
}
br.close();
bw.close();
}
}
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
Integer[] arr = new Integer[n];
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
long first = 0;
for (int i = 0; i < n; i++) {
if(arr[i] - i > 0){
first += arr[i] - i;
}
}
Arrays.sort(arr, Collections.reverseOrder());
long second = 0;
for (int i=0; i<n; i++){
if(arr[i] - i > 0){
second += arr[i] - i;
}
}
long ans = Math.max(first, second);
bw.write(ans+"");
br.close();
bw.close();
}
}