๋ฐ˜์‘ํ˜•
JuneBee
JuneBee
JuneBee
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (102)
    • ๐Ÿ‘” JOB (10)
      • ์ „ํ˜• ํ›„๊ธฐ (10)
    • ๐ŸŽฎ GAME (9)
      • ์ ค๋‹ค | ์™•๊ตญ์˜ ๋ˆˆ๋ฌผ ๊ฒŒ์ž„ ์ผ๊ธฐ (9)
    • ๐Ÿ““ STUDY (60)
      • JAVA (15)
      • TIL (2)
      • FASTCAMPUS (32)
      • ํ™˜๊ฒฝ์„ค์ • (2)
      • YOCTO (1)
      • OS (4)
      • ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ์ธ ์•ก์…˜ (2)
    • ๐ŸŽงDAILY (6)
    • ๐Ÿ‡ฉ๐Ÿ‡ช GERMAN (17)
      • ๋Œ€ํ•™์› ์ง€์› (3)
      • ์ง€์› ํ›„๊ธฐ (11)
      • ๋…์ผ์–ด ์‹œํ—˜ (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ์ผ์ƒ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • telc
  • ์ž๋ฃŒ๊ตฌ์กฐ
  • ์‹ธํ”ผ
  • ๋ชจํ—˜์ผ๊ธฐ
  • ํ”Œ๋ ˆ์ด์ผ๊ธฐ
  • ํฌ๋ฃจ์Šค์นผ
  • ๋…์ผ์œ ํ•™
  • ํŒจ์ŠคํŠธ์บ ํผ์Šค
  • Java
  • ๋…์ผ
  • SSAFY
  • ์ทจ์—…์ค€๋น„
  • B1
  • ์œ ํ•™
  • bruteforce
  • C/C++
  • ๋ฐฑํŠธ๋ž˜ํ‚น
  • ์™•๊ตญ์˜๋ˆˆ๋ฌผ
  • ํ•œ๋ฒˆ์—๋๋‚ด๋Š”์ฝ”๋”ฉํ…Œ์ŠคํŠธ369JavaํŽธ์ดˆ๊ฒฉ์ฐจํŒจํ‚ค์ง€Online.
  • ๋…์ผ์–ด
  • ์ ค๋‹ค
  • ๊ฒŒ์ž„์ผ๊ธฐ
  • ์„์‚ฌ
  • ํŒจ์บ ์ฑŒ๋ฆฐ์ง€
  • ํŒจ์ŠคํŠธ์บ ํผ์Šคํ›„๊ธฐ
  • ์™•๋ˆˆ
  • sort
  • ์ •๋ ฌ
  • ์ง์žฅ์ธ์ž๊ธฐ๊ณ„๋ฐœ
  • ์ง์žฅ์ธ์ธ๊ฐ•

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
JuneBee

JuneBee

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 3์ผ์ฐจ
๐Ÿ““ STUDY/FASTCAMPUS

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 3์ผ์ฐจ

2021. 11. 3. 18:20
728x90
๋ฐ˜์‘ํ˜•

๋‚ ์งœ : 2021 ๋…„ 11 ์›” 3 ์ผ
์‹œ์ฒญ ๊ฐ•์˜  : ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ดํ•ด (1) , ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ดํ•ด (2)

Greedy Algorithms

ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‰ฌ์šด ๋ฌธ์ œ๋Š” ์ •๋ ฌ์„ ์ด์šฉ, ๋ณดํ†ต DP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋ณธ ๊ฐ•์˜์— ๋‚˜์˜จ ์˜ˆ์ œ๋Š” ๋ˆ„๊ฐ€๋ด๋„ ์ •๋ ฌ๋กœ ํ‘ธ๋Š” ๋ฌธ์ œ์˜€์ง€๋งŒ ๋ณดํ†ต ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฝ”ํ…Œ์—์„œ ๋งŒ๋‚ฌ์„ ๋•Œ ํƒ์š• ๊ธฐ๋ฒ•์œผ๋กœ ํ’€ ๊ฒƒ์ด๋ผ ์ƒ์ƒ๋„ ๋ชปํ•˜๋Š” ๊ฒƒ๋“ค์ด ๋งŽ๋‹ค๊ณ  ํ•˜๋‹ˆ ์ „ํ˜•์ ์ธ ์œ ํ˜•๋“ค๋งŒ ๋ช‡๊ฐœ ๊ณต๋ถ€ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

๋ฌธ์ œ ์œ ํ˜• : 

1. ๊ฑฐ์Šค๋ฆ„๋ˆ ์ค„์ด๊ธฐ
์†๋‹˜์ด ์ง€๋ถˆํ•œ ๊ธˆ์•ก์—์„œ ๋ฌผ๊ฑด๊ฐ’์„ ์ œํ•œ ์ฐจ์•ก์„ ์ง€๋ถˆํ•˜๋Š” ๋ฌธ์žฌ. 
๋™์ „์„ ์ตœ์†Œํ•œ์œผ๋กœ ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ
-> ์ฃผ๋กœ, 500์› 1000์›์ด ์•„๋‹ˆ๋ผ 400์› 300์› ์ด๋Ÿฐ์‹์œผ๋กœ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ๋กœ ํ’€ ์ˆ˜ ์—†๊ณ  DP๋ฅผ ์ด์šฉํ•˜์—ฌ ํ’€์–ด์•ผํ•œ๋‹ค

2. ์„คํƒ•๋ฐฐ๋‹ฌ 
https://www.acmicpc.net/problem/2839

 

2839๋ฒˆ: ์„คํƒ• ๋ฐฐ๋‹ฌ

์ƒ๊ทผ์ด๋Š” ์š”์ฆ˜ ์„คํƒ•๊ณต์žฅ์—์„œ ์„คํƒ•์„ ๋ฐฐ๋‹ฌํ•˜๊ณ  ์žˆ๋‹ค. ์ƒ๊ทผ์ด๋Š” ์ง€๊ธˆ ์‚ฌํƒ•๊ฐ€๊ฒŒ์— ์„คํƒ•์„ ์ •ํ™•ํ•˜๊ฒŒ Nํ‚ฌ๋กœ๊ทธ๋žจ์„ ๋ฐฐ๋‹ฌํ•ด์•ผ ํ•œ๋‹ค. ์„คํƒ•๊ณต์žฅ์—์„œ ๋งŒ๋“œ๋Š” ์„คํƒ•์€ ๋ด‰์ง€์— ๋‹ด๊ฒจ์ ธ ์žˆ๋‹ค. ๋ด‰์ง€๋Š” 3ํ‚ฌ๋กœ๊ทธ

www.acmicpc.net

์œ„ ๋ฌธ์ œ๋„ ๋Œ€ํ‘œ์ ์ธ DP ๋ฌธ์ œ์ด๋‹ค. DP๋กœ ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ  ํ’€์—ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ๋Š”๋ฐ ํ›„์— ๋น„๊ตํ•˜๋‹ˆ DP๋กœ ํ‘ผ ๊ฒƒ ๊ณผ ๊ฑฐ์˜ ๋น„์Šทํ–ˆ๋‹ค. DP๋กœ ํ’€์—ˆ์„ ๋•Œ ์—„์ฒญ ์งง๊ณ  ๊ฐ„ํŽธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— DP ๋ฌธ์ œ ์œ ํ˜•๋“ค์„ ์ต์ˆ™ํ•˜๊ฒŒ ํ•ด๋‘๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

3. Knapsack

( 1 ) Fractional Knapsack (๋ถ€๋ถ„ ๋ƒ…์„น)์€ ์ •๋ ฌ์„ ์ด์šฉํ•˜์—ฌ ํ’€ ์ˆ˜ ์žˆ๋Š” ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์ด๋‹ค. ๋ฌผ๊ฑด์˜ ๊ฐ€์„ฑ๋น„๊ฐ€ ๊ฐ€์žฅ ์ข‹์€ ์• ๋“ค๋กœ ์ฑ„์›Œ๋„ฃ๊ณ  ๋ฐฐ๋‚ญ์— ๋‹ค์Œ ๋ฌผ๊ฑด์„ ์ง‘์–ด๋„ฃ์ง€ ๋ชปํ•˜๋ฉด ๊ทธ ๋ฌผ๊ฑด์„ ์ชผ๊ฐœ์„œ ๋„ฃ๋Š”๋‹ค. ์ฆ‰, ๊ฐ€์„ฑ๋น„์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„ ํ‘ธ๋Š” ๋ฌธ์ œ๋‹ค

( 2 ) 0/1 Knapsack ์€ ์ •๋ง ๋Œ€ํ‘œ์ ์ธ DP ๋ฌธ์ œ๋‹ค. 

https://www.acmicpc.net/problem/12865

 

12865๋ฒˆ: ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ

์ฒซ ์ค„์— ๋ฌผํ’ˆ์˜ ์ˆ˜ N(1 ≤ N ≤ 100)๊ณผ ์ค€์„œ๊ฐ€ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ K(1 ≤ K ≤ 100,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑฐ์ณ ๊ฐ ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ W(1 ≤ W ≤ 100,000)์™€ ํ•ด๋‹น ๋ฌผ๊ฑด์˜ ๊ฐ€์น˜ V(0 ≤ V ≤ 1,000)

www.acmicpc.net

์œ„ ๋ฌธ์ œ๋ฅผ ์™„์ „ ํƒ์ƒ‰์œผ๋กœ ํ’€์—ˆ์„ ๋•Œ์—๋Š” ๊ณ„์† ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค๊ฐ€ ๋‚ฌ๋‹ค. K ๊ฐ’๊ณผ N ๊ฐ’์„ ๊ณ ๋ คํ•ด ๋ดค์„ ๋•Œ ๋‹น์—ฐํ•œ ๊ฒฐ๊ณผ๋‹ค.... ํ•˜์ง€๋งŒ DP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ ์ „ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ํ•ด๋†“๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋‚  ์ผ์ด ์—†๋‹ค.

์•„๋ž˜๋Š” ์œ„ ๋ฌธ์ œ์˜ ์ฝ”๋“œ์ด๋‹ค.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
//dp๋กœ ์ ‘๊ทผ. ์ˆœ์กฐ๋ถ€๋กœ ํ–ˆ๋”๋‹ˆ ๊ณ„์† ์‹คํŒจ
	public static void main(String[] args) throws Exception {
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());//๋ฌผ๊ฑด์˜ ์ˆ˜
		int K = Integer.parseInt(st.nextToken());//๋ฐฐ๋‚ญ์˜ ํ•œ๋„
		
		int[] D = new int[K+1];					//๊ฐ€๋ฐฉ DP ๋ฐฐ์—ด(์ตœ๋Œ€ ๊ฐ€์น˜)
		int[] weights = new int[N+1];			//๋ฌด๊ฒŒ ๋ฐฐ์—ด
		int[] values = new int[N+1];			//๋ฌผ๊ฑด์˜ ๊ฐ€์น˜
		
		for(int i= 1; i<=N ;i++) {
			st = new StringTokenizer(br.readLine());
			weights[i] = Integer.parseInt(st.nextToken()); //๊ฐ ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ
			values[i] = Integer.parseInt(st.nextToken());//๊ฐ ๋ฌผ๊ฑด์˜ ๊ฐ€์น˜
		}//end of input
		
		//Dp: ๋ฌผ๊ฑด ๊ฐ€์น˜์˜ ์ตœ๋Œ“๊ฐ’
		for(int i =1; i<=N ; i++) {//๋ชจ๋“  ๋ฌผ๊ฑด์— ๋Œ€ํ•˜์—ฌ
			for(int w = K ; w>=weights[i]; w--) {//๊ฑฐ๊พธ๋กœ ์ˆœํšŒ -> ํ˜„์žฌ ๋ฌด๊ฒŒ ๋‚จ์€๋งŒํผ ๋ณด๋Š”๊ฑฐ
				D[w] = Math.max(D[w], values[i]+D[w-weights[i]]);//๋‹ด์ง€ ์•Š๋Š” ์ƒํ™ฉ vs ๋‹ด๋Š” ์ƒํ™ฉ
				//๋‹ด๋Š” ์ƒํ™ฉ์ผ ๋•Œ: ํ˜„์žฌ ๋ฌผ๊ฑด ๊ฐ€์น˜ + ๋ฌผ๊ฑด ๋‹ด์•˜์„๋•Œ ๋‚จ๋Š” ๊ฐ€๋ฐฉ ๋ฌด๊ฒ
			}
			
		}
		//์ตœ๋Œ€ ๊ฐ€์น˜ ์ถœ๋ ฅ
		System.out.println(D[K]);
	}

}

์ฝ”๋“œ๋„ ๋งค์šฐ ์งง๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค์ƒ ์ „๋ถ€ input์„ ๋‹ด๋Š” ์ฝ”๋“œ๊ณ  solution ์ฝ”๋“œ๋Š” 3์ค„๋ฐ–์— ์—†๋‹ค.

๋”ฐ๋ผ์„œ, ์ž˜ ์ตํ˜€๋‘๋ฉด ๋น„์Šทํ•œ ์œ ํ˜•์ด ๋‚˜์˜ฌ ๋•Œ ์ •๋ง ์†์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

๋‹ค์Œ์—, 0/1 Knapsack์„ ์ข€ ๋” ์ž์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค.

4. ๋ณ‘๋šœ๊ป‘ ๊ฐœ์ž„

์ด์ง„ ๊ฒ€์ƒ‰์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ ฌํ•˜์—ฌ ์จ์•ผํ•œ๋‹ค.

 

์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์•ž์„œ ๋งํ•œ, ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ๋ฅผ ์ •๋ ฌ๋กœ ํ’€๊ธฐ ์œ„ํ•ด์„œ๋Š” Comparator๋‚˜ Commparable์„ ์‚ฌ์šฉํ•œ๋‹ค.

import java.util.Arrays;

class Burger{
	String name;
	int price;
	Burger(String name, int price){}
	
}
public class Test01 {
	public static void main(String[] args) {
		Burger[] burgers = new Burger[3];
		burgers[0] = new Burger("1957",6000);
		burgers[1] = new Burger("๋”๋ธ”๋ถˆ๊ณ ๊ธฐ",7000);
		burgers[2] = new Burger("ํ•œ์šฐ๋ฒ„๊ฑฐ", 8000);
		
		Arrays.sort(burgers); //Exception occurs
}
}

์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ClassCaseException์ด ๋ฐœ์ƒํ•œ๋‹ค.

์ด์œ ๋Š” Arrays.sort์˜ ๊ธฐ์ค€์ ์ธ comparable์— ๋ฒ„๊ฑฐ ๊ฐ์ฒด (String name , int price ) ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ธฐ์ค€์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ, Comparator๋‚˜ Comparable์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์ค€์ ์„ ์‹ฌ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

Arrays.sort(arr, new Comparator<int[]>() {
			@Override
			public int compare(int[] o1, int[] o2) {
				return o1[1]-o2[1];}});
		print(arr);

์ต๋ช… ํด๋ž˜์Šค์—์„œ Comparator๋ฅผ ํ™œ์šฉํ•œ ๋ฐฉ์‹์ด๋‹ค.

//๋žŒ๋‹ค์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ
		Arrays.sort(arr, (o1, o2)-> o1[1] - o2[1]);
		print(arr);

๋žŒ๋‹ค์‹์„ ์ด์šฉํ•˜๋ฉด ํ›จ์”ฌ ๋” ์งง๊ณ  ๊ฐ„๋‹จํ•ด์ง„๋‹ค. 


ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ๋ฐ”๋กœ๊ฐ€๊ธฐ๐Ÿ‘‰ https://bit.ly/3FVdhDa

 

์ˆ˜๊ฐ•๋ฃŒ 100% ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ | ํŒจ์ŠคํŠธ์บ ํผ์Šค

๋”ฑ 5์ผ๊ฐ„ ์ง„ํ–‰๋˜๋Š” ํ™˜๊ธ‰์ฑŒ๋ฆฐ์ง€๋กœ ์ˆ˜๊ฐ•๋ฃŒ 100% ํ™˜๊ธ‰๋ฐ›์œผ์„ธ์š”! ๋” ๋Šฆ๊ธฐ์ „์— ์ž๊ธฐ๊ณ„๋ฐœ ๋ง‰์ฐจ ํƒ‘์Šน!

fastcampus.co.kr

๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

'๐Ÿ““ STUDY > FASTCAMPUS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 5์ผ์ฐจ  (0) 2021.11.05
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 4์ผ์ฐจ  (0) 2021.11.04
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 2์ผ์ฐจ  (1) 2021.11.02
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 1์ผ์ฐจ  (1) 2021.11.01
[FASTCAMPUS] ๊ฐ“์ƒ์‚ด๊ธฐ 30์ผ 100% ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€  (0) 2021.11.01
    '๐Ÿ““ STUDY/FASTCAMPUS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 5์ผ์ฐจ
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 4์ผ์ฐจ
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 2์ผ์ฐจ
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 1์ผ์ฐจ
    JuneBee
    JuneBee
    โ‚Šหš.๐ŸŽง๐Ÿ““ ๊ธฐ๋ก์šฉ ๋ธ”๋กœ๊ทธ ๐“‚ƒ๐Ÿ–Š

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”