관리 메뉴

Partially Committed

[λ°±μ€€ 13549/1956/1620/2629] μžλ°” λ³Έλ¬Έ

πŸ”₯ Algorithm || λ¬Έμ œν’€μ΄/PS

[λ°±μ€€ 13549/1956/1620/2629] μžλ°”

WonderJay 2023. 2. 22. 14:36
728x90
λ°˜μ‘ν˜•
SMALL

(title: [λ°±μ€€ 13549/1956/1620/2629] μžλ°”)

A. μˆ¨λ°”κΌ­μ§ˆ3 BOJ 13549

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

 

13549번: μˆ¨λ°”κΌ­μ§ˆ 3

μˆ˜λΉˆμ΄λŠ” 동생과 μˆ¨λ°”κΌ­μ§ˆμ„ ν•˜κ³  μžˆλ‹€. μˆ˜λΉˆμ΄λŠ” ν˜„μž¬ 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 μžˆλ‹€. μˆ˜λΉˆμ΄λŠ” κ±·κ±°λ‚˜ μˆœκ°„μ΄λ™μ„ ν•  수 μžˆλ‹€. λ§Œμ•½, 수빈이의 μœ„μΉ˜κ°€ X일

www.acmicpc.net

λ‚œμ΄λ„ Gold 5
풀이 μ‹œκ°„ 20 λΆ„
λΆ„λ₯˜ λ‹€μ΅μŠ€νŠΈλΌ / 0-1 BFS
μ‹œκ°„λ³΅μž‘λ„ λ‹€μ΅μŠ€νŠΈλΌ : O(nlogn)
0-1 BFS : O(V+E) = O(N+N) ~= O(N)
κ³΅κ°„λ³΅μž‘λ„  

일차원 κ·Έλž˜ν”„μ—μ„œ λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ„ μˆ˜ν–‰ν•˜μ—¬ μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆλ‹€.

λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” 문제 상황을 1차원 κ·Έλž˜ν”„λ‘œ λ°”κΎΈμ–΄ 생각해보면

λͺ¨λ“  κ°€μ€‘μΉ˜λŠ” 1 λ˜λŠ” 0 으둜 μ–‘μ˜ 간선을 κ°€μ§€λŠ” 것을 μ•Œ 수 있고,

λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λ©΄ O(nlogn) ~= 500000 이기 λ•Œλ¬Έμ— μ‹œκ°„ μ œν•œμ—λ„ 걸릴 μ—Όλ €κ°€ μ—†κΈ° λ•Œλ¬Έμ΄λ‹€. μˆœκ°„μ΄λ™μ„ ν•˜λŠ” κ²½μš°μ—λŠ” κ°€μ€‘μΉ˜κ°€ 0 인 λ…Έλ“œλ₯Ό μš°μ„ μˆœμœ„ 큐에 λ„£μ–΄μ£Όκ³ , κ±Έμ–΄κ°€λŠ” κ²½μš°μ—λŠ” κ°€μ€‘μΉ˜κ°€ 1 인 λ…Έλ“œλ₯Ό μš°μ„ μˆœμœ„ 큐에 λ„£μ–΄μ£Όλ©΄ λœλ‹€.

 

[λ‹€μ΅μŠ€νŠΈλΌ]

import java.io.*;
import java.util.*;

public class Main {

    static class node implements Comparable<node> {
        int to;
        int w;

        public node(int to, int w) {
            this.to = to;
            this.w = w;
        }

        @Override
        public int compareTo(node v) {
            if (this.w > v.w)
                return 1;
            else return -1;
        }
    }

    public static void main(String[] args) throws IOException {
        System.setIn(new FileInputStream("src/input.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer stk;

        stk = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(stk.nextToken());
        int k = Integer.parseInt(stk.nextToken());

        int[] dist = new int[100001];
        Arrays.fill(dist, Integer.MAX_VALUE);
        dist[n] = 0;
        PriorityQueue<node> pq = new PriorityQueue<>();
        pq.add(new node(n, 0));


        while(!pq.isEmpty()){
            node now = pq.poll();
            node [] next = {
                    new node(now.to-1, 1),
                    new node(now.to+1, 1),
                    new node(now.to*2, 0)
            };
            for(node cur : next){
                if(cur.to<0||cur.to>100000) continue; // out of bounds
                if(dist[cur.to] > dist[now.to] + cur.w){
                    dist[cur.to] = dist[now.to] + cur.w;
                    pq.add(new node(cur.to, dist[cur.to]));
                }
            }
        }

        bw.write(dist[k] + "\n");
        bw.flush();
        bw.close();
    }
}

ν˜Ήμ€ 0-1 BFS μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λ©΄ 보닀 효율적일 여지가 μžˆλ‹€. 0-1 BFS λŠ” 0 λ˜λŠ” 1 의 κ°€μ€‘μΉ˜λ§Œ κ°€μ§€λŠ” κ·Έλž˜ν”„μ—μ„œ μ΅œλ‹¨κ²½λ‘œλ₯Ό μ°Ύμ•„λ‚΄λŠ” μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ dequeue λ₯Ό μ‚¬μš©ν•˜μ—¬,  μš°μ„ μˆœμœ„μ— 따라 μ•žμ— add ν•  지, 뒀에 add ν•  지λ₯Ό κ²°μ •ν•˜λ©΄ λœλ‹€. μ΄λŸ¬ν•œ 0-1 BFS μ•Œκ³ λ¦¬μ¦˜μ€ O(V+E) 의 μ‹œκ°„λ³΅μž‘λ„λ₯Ό 가진닀.

[0-1 BFS]

import java.io.*;
import java.util.*;

public class Main {

    static class node {
        int to;
        int w;

        public node(int to, int w) {
            this.to = to;
            this.w = w;
        }
    }

    public static void main(String[] args) throws IOException {
        System.setIn(new FileInputStream("src/input.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer stk;

        stk = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(stk.nextToken());
        int k = Integer.parseInt(stk.nextToken());

        int[] dist = new int[100001];
        boolean[] visited = new boolean[100001];
        Arrays.fill(dist, -1);
        dist[n] = 0;
        visited[n] = true;
        LinkedList<node> dq = new LinkedList<>();
        dq.add(new node(n, 0));


        while (!dq.isEmpty()) {
            node now = dq.poll();
            node[] next = {
                    new node(now.to * 2, 0),
                    new node(now.to - 1, 1),
                    new node(now.to + 1, 1)
            };
            for (node cur : next) {
                if (cur.to < 0 || cur.to > 100000) continue; // out of bounds
                if (!visited[cur.to]) {
                    visited[cur.to] = true;
                    if (cur.w == 0) { // μˆœκ°„μ΄λ™
                        dist[cur.to] = dist[now.to];
                        dq.addFirst(new node(cur.to, cur.w));
                    } else { // 걸어감
                        dist[cur.to] = dist[now.to] + cur.w;
                        dq.addLast(new node(cur.to, cur.w));
                    }
                }
            }
        }

        bw.write(dist[k] + "\n");
        bw.flush();
        bw.close();
    }
}

 

 

B. μš΄λ™ BOJ 1956

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

 

1956번: μš΄λ™

첫째 쀄에 V와 Eκ°€ λΉˆμΉΈμ„ 사이에 두고 주어진닀. (2 ≤ V ≤ 400, 0 ≤ E ≤ V(V-1)) λ‹€μŒ E개의 μ€„μ—λŠ” 각각 μ„Έ 개의 μ •μˆ˜ a, b, cκ°€ 주어진닀. a번 λ§ˆμ„μ—μ„œ b번 λ§ˆμ„λ‘œ κ°€λŠ” 거리가 c인 λ„λ‘œκ°€ μžˆλ‹€λŠ” 의

www.acmicpc.net

λ‚œμ΄λ„ Gold 4
풀이 μ‹œκ°„ 20 λΆ„
λΆ„λ₯˜ ν”Œλ‘œμ΄λ“œ - μ›Œμ…œ
μ‹œκ°„λ³΅μž‘λ„ O(V^3) ~= O(400^3) = O(64000000)
κ³΅κ°„λ³΅μž‘λ„  

  각각의 λ…Έλ“œμ—μ„œ 도달할 수 μžˆλŠ” μ΅œλ‹¨ 경둜 ν…Œμ΄λΈ”μ΄ μžˆλ‹€λ©΄, λ¬Έμ œμ—μ„œ μ •μ˜ν•˜λŠ” '사이클' 을 μ‰½κ²Œ νŒλ‹¨ν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄, a->b 둜 κ°€λŠ” μ΅œλ‹¨ κ²½λ‘œκ°€ μ‘΄μž¬ν•œλ‹€λ©΄ b->a 둜 κ°€λŠ” μ΅œλ‹¨ κ²½λ‘œκ°€ μ‘΄μž¬ν•˜λŠ” 지 ν™•μΈν•˜κ³ , λ§Œμ•½ μ‘΄μž¬ν•œλ‹€λ©΄ κ·Έ λ‘˜μ˜ μ΅œλ‹¨ 경둜의 합이 사이클 거리가 될 것이닀. κ·Έ λ‹€μŒμ—λŠ” a->c 둜 κ°€λŠ” μ΅œλ‹¨ κ²½λ‘œκ°€ μ‘΄μž¬ν•œλ‹€λ©΄ c->a 둜 κ°€λŠ” μ΅œλ‹¨ κ²½λ‘œκ°€ μ‘΄μž¬ν•˜λŠ” 지 확인해보고 더 μž‘μ€ κ°’μœΌλ‘œ 계속 κ°±μ‹ ν•΄λ‚˜κ°€λ©΄ 될 것 이닀.

 

  즉, λͺ¨λ“  λ…Έλ“œ κ°„ μ΅œλ‹¨ κ²½λ‘œκ°€ 있으면 쒋을텐데 문제의 μ œν•œ 사항을 λ³΄λ‹ˆ λ…Έλ“œμ˜ κ°œμˆ˜λŠ” μ΅œλŒ€ 400 개 이닀. 그러면, λͺ¨λ“  λ…Έλ“œ κ°„ μ΅œλ‹¨ 경둜λ₯Ό μ–»λŠ” μ•Œκ³ λ¦¬μ¦˜μΈ ν”Œλ‘œμ΄λ“œ-μ›Œμ…œ μ•Œκ³ λ¦¬μ¦˜μ„ μˆ˜ν–‰ν•˜μ—¬λ„ μ‹œκ°„ μ œν•œ 내에 톡과할 수 μžˆμ„ κ²ƒμž„μ„ μ•Œ 수 μžˆλ‹€.(O(V^3)) 

 

  κ·Έλž˜ν”„ 거리 정보λ₯Ό 2차원 행렬에 받은 λ‹€μŒ, ν”Œλ£¨μ΄λ“œ μ›Œμ…œ μ•Œκ³ λ¦¬μ¦˜μ„ μ μš©ν•œλ‹€. 그리고 λ‚˜μ„œ A->B κΉŒμ§€μ˜ μ΅œλ‹¨ κ²½λ‘œκ°€ μžˆλ‹€λ©΄ B->A κ²½λ‘œκ°€ μžˆλŠ”μ§€ ν™•μΈν•˜κ³  μžˆλ‹€λ©΄ 이 두 경둜의 합을 μ €μž₯ν•œλ‹€. μ΄λŸ¬ν•œ 과정을 λͺ¨λ“  λ…Έλ“œμ— λŒ€ν•˜μ—¬ λ°˜λ³΅ν•˜λ©° μ΅œλ‹¨ 사이클을 좜λ ₯ν•΄μ£Όλ©΄ λœλ‹€.

 

  쑰심해야 ν•  점은, μ΅œλ‹¨κ²½λ‘œλ₯Ό κ΅¬ν•˜λŠ” κ³Όμ •μ—μ„œ μ˜€λ²„ν”Œλ‘œμš°κ°€ λ°œμƒν•˜μ—¬ μš°λ¦¬κ°€ μ›ν•˜μ§€ μ•ŠλŠ” κ°’μœΌλ‘œ ν…Œμ΄λΈ”μ΄ μ±„μ›Œμ§ˆ 수 μžˆλ‹€λŠ” 것이닀. 또 ν•˜λ‚˜λŠ”, 주어진 κ·Έλž˜ν”„μ—μ„œ 사이클이 λ°œμƒν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” -1 을 좜λ ₯ν•΄μ•Ό ν•œλ‹€λŠ” 것을 쑰심해야 ν•œλ‹€.

 

import java.io.*;
import java.util.*;

public class Main {
    static int v;
    static int e;
    static long[][] dist;

    public static void main(String[] args) throws IOException {
        System.setIn(new FileInputStream("src/input.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer stk;

        stk = new StringTokenizer(br.readLine());
        v = Integer.parseInt(stk.nextToken());
        e = Integer.parseInt(stk.nextToken());

        dist = new long[v + 1][v + 1];

        for (int i = 1; i <= v; i++) {
            for (int j = 1; j <= v; j++) {
                if (i == j)
                    dist[i][j] = 0;
                else
                    dist[i][j] = Integer.MAX_VALUE;
            }
        }

        for (int i = 0; i < e; i++) {
            stk = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(stk.nextToken());
            int b = Integer.parseInt(stk.nextToken());
            int cost = Integer.parseInt(stk.nextToken());
            dist[a][b] = cost;
        }

        for (int k = 1; k <= v; k++) {
            for (int st = 1; st <= v; st++) {
                for (int end = 1; end <= v; end++) {
                    if (dist[st][end] > dist[st][k] + dist[k][end]) {
                        dist[st][end] = dist[st][k] + dist[k][end];
                    }
                }
            }
        }

        long min = Integer.MAX_VALUE;
        for (int i = 1; i <= v; i++) {
            for (int j = 1; j <= v; j++) {
                 if(i==j) continue;
                 if(dist[i][j] != Integer.MAX_VALUE && dist[j][i] != Integer.MAX_VALUE){
                     min = Math.min(dist[i][j] + dist[j][i] ,min);
                 }
            }
        }

        if(min==Integer.MAX_VALUE){
            bw.write("-1\n");
        } else {
            bw.write(min+"\n");
        }

        bw.flush();
        bw.close();
    }
}

 

 

C. λ‚˜λŠ”μ•Ό 포켓λͺ¬ λ§ˆμŠ€ν„° μ΄λ‹€μ†œ BOJ 1620

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

 

1620번: λ‚˜λŠ”μ•Ό 포켓λͺ¬ λ§ˆμŠ€ν„° μ΄λ‹€μ†œ

첫째 μ€„μ—λŠ” 도감에 μˆ˜λ‘λ˜μ–΄ μžˆλŠ” 포켓λͺ¬μ˜ 개수 Nμ΄λž‘ λ‚΄κ°€ λ§žμΆ°μ•Ό ν•˜λŠ” 문제의 개수 M이 μ£Όμ–΄μ Έ. Nκ³Ό M은 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μΈλ°, μžμ—°μˆ˜κ°€ λ­”μ§€λŠ” μ•Œμ§€? λͺ¨λ₯΄λ©΄

www.acmicpc.net

λ‚œμ΄λ„ Silver 4
풀이 μ‹œκ°„ 10λΆ„
λΆ„λ₯˜ 해쉬맡
μ‹œκ°„λ³΅μž‘λ„  
κ³΅κ°„λ³΅μž‘λ„  

해쉬맡을 μ‚¬μš©ν•  쀄 μ•„λŠ”μ§€ λ¬Όμ–΄λ³΄λŠ” λ¬Έμ œμ΄λ‹€!

 

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        System.setIn(new FileInputStream("src/input.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer stk;

        stk = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(stk.nextToken());
        int m = Integer.parseInt(stk.nextToken());

        int cnt = 1;
        HashMap<Integer, String> num_name_Map = new HashMap<>();
        HashMap<String, Integer> name_num_Map = new HashMap<>();

        for (int i = 0; i < n; i++) {
            String input = br.readLine();
            num_name_Map.put(cnt, input);
            name_num_Map.put(input, cnt);
            cnt++;
        }
        for (int i = 0; i < m; i++) {
            String input = br.readLine();
            char first = input.charAt(0);
            boolean isitnum = true;
            if('A'<=first && first<='Z'){
                isitnum = false;
            }
            if(isitnum){
                // num
                bw.write(num_name_Map.get(Integer.valueOf(input))+"\n");
            } else {
                // name
                bw.write(name_num_Map.get(input)+"\n");
            }
        }

        bw.flush();
        bw.close();
    }
}

java hash_map

더보기

JAVA 의 해쉬맡은 array 와 linked-list 둜 이루어짐.

κ·Έλž˜μ„œ KEY 값을 μ•ˆλ‹€λ©΄ O(1) μ•ˆμ— ARRAY μ—μ„œ κΊΌλ‚΄μ˜¬ 수 μžˆλŠ” κ²ƒμž„.

λ§Œμ•½ Collision 이 λ°œμƒν•œλ‹€λ©΄ Linked-LIst Chaining 을 μˆ˜ν–‰ν•¨.

 

get, put, remove, containsKey : O(1) ~ O(n)

containsValue : O(n)

 

Collision 이 많이 λ°œμƒν•˜μ—¬ Linked-List κ°€ λ„ˆλ¬΄ 길어지면 μ„±λŠ₯을 κ°œμ„ ν•˜κΈ° μœ„ν•΄ JAVA 8 λΆ€ν„°λŠ” Tree ꡬ쑰둜 λ³€κ²½ν•œλ‹€κ³  함.

 

 

D. μ–‘νŒ” μ €μšΈ BOJ 2629

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

 

2629번: μ–‘νŒ”μ €μšΈ

첫째 μ€„μ—λŠ” μΆ”μ˜ κ°œμˆ˜κ°€ μžμ—°μˆ˜λ‘œ 주어진닀. μΆ”μ˜ κ°œμˆ˜λŠ” 30 μ΄ν•˜μ΄λ‹€. λ‘˜μ§Έ μ€„μ—λŠ” μΆ”μ˜ λ¬΄κ²Œλ“€μ΄ μžμ—°μˆ˜λ‘œ κ°€λ²Όμš΄ 것뢀터 μ°¨λ‘€λ‘œ 주어진닀. 같은 무게의 μΆ”κ°€ μ—¬λŸ¬ 개 μžˆμ„ μˆ˜λ„ μžˆλ‹€. μΆ”μ˜ 무

www.acmicpc.net

λ‚œμ΄λ„ Gold 3
풀이 μ‹œκ°„ 풀이가 μ•ˆλ– μ˜¬λΌμ„œ ꡬ글링함..😒
λΆ„λ₯˜ λ°±νŠΈλž˜ν‚Ή, DP
μ‹œκ°„λ³΅μž‘λ„  
κ³΅κ°„λ³΅μž‘λ„  

νƒœκ·Έλ₯Ό μ—΄μ–΄λ³΄λ‹ˆ 냅색 문제라고 λ˜μ–΄ μžˆμ–΄μ„œ, 이λ₯Ό κ³ λ €ν•˜λ©΄μ„œ ν’€λ €κ³  ν–ˆμ§€λ§Œ

 

κ·Έλƒ₯ λ°±νŠΈλž˜ν‚Ήμ„ λŒλ©΄μ„œ dp λ₯Ό μ±„μš°λŠ” 방식이 쑰금 더 직관적인 것 κ°™λ‹€

 

dp[idx][w] ; idx κΉŒμ§€μ˜ μΆ”λ₯Ό ν™•μΈν•˜μ˜€μ„ λ•Œ w λΌλŠ” 무게λ₯Ό λ§Œλ“€ 수 μžˆλŠ”μ§€ μ—¬λΆ€

라고 μ •μ˜ν•˜μž.

 

그리고 idx 번째의 μΆ”λ₯Ό ν™•μΈν•˜λ©΄μ„œ μš°λ¦¬κ°€ ν•  수 μžˆλŠ” λ™μž‘μ€ μ•„λž˜μ˜ 3 κ°€μ§€λ§Œ κ°€λŠ₯ν•˜λ‹€.

1. ꡬ슬의 λ§žμ€νŽΈμ— μΆ”λ₯Ό μ˜¬λ €λ†“λŠ”λ‹€.

β–Άμ΄λŸ¬ν•œ κ²½μš°μ—λŠ” w+weight[idx] 무게λ₯Ό 확인할 수 있게 λœλ‹€.

2. ꡬ슬과 같은 νŽΈμ— μΆ”λ₯Ό μ˜¬λ €λ†“λŠ”λ‹€.

β–Άμ΄λŸ¬ν•œ κ²½μš°μ—λŠ” Math.abs( w-weight[idx] ) 무게λ₯Ό 확인할 수 있게 λœλ‹€.

3. ν•΄λ‹Ή μΆ”λ₯Ό μ˜¬λ €λ†“μ§€ μ•ŠλŠ”λ‹€.

β–Άμ΄λŸ¬ν•œ κ²½μš°μ—λŠ” w 무게λ₯Ό 확인할 수 있게 λœλ‹€.

 

이λ₯Ό μž¬κ·€ν•¨μˆ˜ ν˜•νƒœλ‘œ κ΅¬ν˜„ν•˜λ©΄ λœλ‹€.

import java.io.*;
import java.util.*;

public class Main {
    static boolean [][] dp;
    static int n;
    static int [] weight;
    public static void main(String[] args) throws IOException {
        System.setIn(new FileInputStream("src/input.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer stk;

        n = Integer.parseInt(br.readLine()); // μΆ”μ˜ 개수
        weight = new int[n+1];
        stk = new StringTokenizer(br.readLine());
        int total = 0;
        for(int i = 0 ; i < n; i++){
            weight[i] = Integer.parseInt(stk.nextToken());
            total += weight[i];
        }

        dp = new boolean[n+1][15001];
        solve(0,0);

        int m = Integer.parseInt(br.readLine()); // 쿼리 개수
        stk = new StringTokenizer(br.readLine());
        for(int i = 0 ; i < m; i ++){
            int target = Integer.parseInt(stk.nextToken());
            if(target > 500*30)
                bw.write("N ");
            else if(dp[n][target])
                bw.write("Y ");
            else bw.write("N ");

        }

        bw.flush();
        bw.close();
    }
    static void solve(int idx, int w){
        if(idx>n)
            return;
        if(dp[idx][w])
            return;
        dp[idx][w] = true;
        solve(idx+1, w + weight[idx]); // ꡬ슬의 λ§žμ€ νŽΈμ— μΆ”λ₯Ό μ˜¬λ¦¬λŠ” 경우
        solve(idx+1, w); // μΆ”λ₯Ό μ˜¬λ¦¬μ§€ μ•ŠλŠ” 경우
        solve(idx+1, Math.abs(w-weight[idx])); // ꡬ슬과 같은 νŽΈμ— μΆ”λ₯Ό μ˜¬λ¦¬λŠ” 경우
    }
}

 

 

 

728x90
λ°˜μ‘ν˜•
LIST
Comments