우규이인우윀
Eager To Learn 🌌
우규이인우윀
전체 방문자
였늘
μ–΄μ œ

λΈ”λ‘œκ·Έ 메뉴

  • 🏑 ν™ˆ
  • πŸš€ κΉƒν—ˆλΈŒ
  • β›… νƒœκ·Έ ν΄λΌμš°λ“œ
  • λΆ„λ₯˜ 전체보기 (217)
    • πŸ‘¨πŸ»β€πŸ’» PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm 기법 (1)
      • 바킹독 (21)
    • λΈ”λ‘œκ·Έ 이사 (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • 자료ꡬ쑰 (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • κ°œλ°œμ„œμ  (15)
      • 가상 λ©΄μ ‘ μ‚¬λ‘€λ‘œ λ°°μš°λŠ” λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ 섀계 기초 (1)
      • 였브젝트 - 쑰영호 (7)
      • μΉœμ ˆν•œ SQL νŠœλ‹ (7)
    • 회고 (2)
hELLO Β· Designed By μ •μƒμš°.
우규이인우윀
πŸ‘¨πŸ»β€πŸ’» PS/JAVA

[JAVA] 2021 KAKAO BLIND RECRUITMENT γ€ν•©μŠΉ νƒμ‹œ μš”κΈˆγ€‘

πŸ‘¨πŸ»β€πŸ’» PS/JAVA

[JAVA] 2021 KAKAO BLIND RECRUITMENT γ€ν•©μŠΉ νƒμ‹œ μš”κΈˆγ€‘

2023. 5. 12. 12:10


λ¬Έμ œμ—μ„œ μš”κ΅¬ν•˜λŠ” 닡을 κ°„λž΅ν•˜κ²Œ ν‘œν˜„ν•˜λ©΄, 

 

(μΆœλ°œμ§€μ  β†’ κ²½μœ μ§€μ ) μš”κΈˆ + (κ²½μœ μ§€μ  β†’ 무지 λͺ©μ μ§€) μš”κΈˆ + (κ²½μœ μ§€μ  β†’ μ–΄ν”ΌμΉ˜ 지점) μš”κΈˆ = μ΅œμ’… μš”κΈˆ

 

μœ„ μ‹μœΌλ‘œλΆ€ν„° ꡬ해진 μ΅œμ’… μš”κΈˆμ˜ μ΅œμ†Ÿκ°’μ„ λ‹΅μœΌλ‘œ 좜λ ₯ν•˜λ©΄ λœλ‹€.

 

μ²˜μŒμ— ν‘Ό 방식은 μ‹œκ°„ μ΄ˆκ³Όκ°€ 계속 λ°œμƒν–ˆλŠ”λ°

 

        for(int i=1;i<=n;i++){
            answer = Math.min(answer,dijk(s,i)+dijk(i,a)+dijk(i,b));
        }

μœ„μ™€ 같이, λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ„ λ£¨ν”„λ¬Έλ§ˆλ‹€ 3λ²ˆμ”© μ‚¬μš©ν•˜κ³  μžˆμ—ˆλ‹€.

 

 

λ‹€μ‹œ μƒκ°ν•΄λ³΄λ‹ˆ,

 

μΆœλ°œμ§€μ  β†’ κ²½μœ μ§€μ  μš”κΈˆ μ •λ³΄λŠ” λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ„ ν•œλ²ˆλ§Œ μˆ˜ν–‰ν•΄μ„œ ꡬ할 수 있고

 

(κ²½μœ μ§€μ  β†’ 무지 λͺ©μ μ§€) μš”κΈˆ + (κ²½μœ μ§€μ  β†’ μ–΄ν”ΌμΉ˜ 지점)μš”κΈˆ μ—­μ‹œ λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜ ν•œλ²ˆ μˆ˜ν–‰ν•˜λ©΄ 두 정보λ₯Ό 얻을 수 μžˆλ‹€.

 

λ‹€λ§Œ 경유 지점 λ§ˆλ‹€ λ‹€ ꡬ해봐야 ν•˜κΈ° λ•Œλ¬Έμ—, for문을 ν†΅ν•΄μ„œ κ²½μœ μ§€μ  별 μš”κΈˆ 정보λ₯Ό κ΅¬ν•΄μ•Όν•œλ‹€.

 

λ”°λΌμ„œ μ•„λž˜μ™€ 같이 λ‘œμ§μ„ λ³€κ²½ν•˜λ‹ˆ, λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜ μ‚¬μš© 횟수λ₯Ό 쀄일 수 μžˆμ—ˆκ³  μ‹œκ°„μ œν•œ 초과 없이 톡과할 수 μžˆμ—ˆλ‹€.

        int[] result1 = dijk(s);
        
        for(int i=1;i<=n;i++){
            int[] result2 = dijk(i);
            answer = Math.min(answer,result1[i-1]+result2[a-1]+result2[b-1]);
        }

 

import java.util.*;
class Solution {
    final int MAX = 20000001;
    int n;
    int[][] g;
    int[] dist;
    boolean[] checked;
    PriorityQueue<int[]> pq;
    public int solution(int n, int s, int a, int b, int[][] fares) {
        int answer = MAX;
        setUp(n,fares);
        
        int[] result1 = dijk(s);
        
        for(int i=1;i<=n;i++){
            int[] result2 = dijk(i);
            answer = Math.min(answer,result1[i-1]+result2[a-1]+result2[b-1]);
        }
        return answer;
    }
    int[] dijk(int start){
        pq = new PriorityQueue<>((a,b)->a[0]-b[0]);
        dist = new int[n];
        checked = new boolean[n];
        Arrays.fill(dist,MAX);
        dist[start-1] = 0;
        pq.offer(new int[]{dist[start-1],start-1});
        while(!pq.isEmpty()){
            int[] info = pq.poll();
            int u = info[1];
            if(checked[u]){
                continue;
            }
            checked[u]=true;
            for(int v=0;v<n;v++){
                if(dist[v]>dist[u]+g[u][v]){
                    dist[v]=dist[u]+g[u][v];
                    pq.offer(new int[]{dist[v],v});
                }
            }
        }
        return dist;
        
    }
    void setUp(int n,int[][] fares){
        this.n=n;
        g = new int[n][n];
        for(int r=0;r<n;r++){
            for(int c=0;c<n;c++){
                if(r==c){
                    g[r][c]=0;
                }else{
                    g[r][c]=MAX;
                }
            }
        }
        
        
        for(int r=0;r<fares.length;r++){
            int[] fare = fares[r];
            for(int c=0;c<n;c++){
                g[fare[0]-1][fare[1]-1]=fare[2];
                g[fare[1]-1][fare[0]-1]=fare[2];
            }
        }
        
    }
}
    'πŸ‘¨πŸ»β€πŸ’» PS/JAVA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [JAVA] λ°±μ€€ 18869번 【G5.λ©€ν‹°λ²„μŠ€ ⅑】
    • λ¬Έμžμ—΄ μˆ˜μ‹ κ³„μ‚°ν•˜λŠ” λ©”μ„œλ“œ λ§Œλ“€κΈ°
    • [JAVA] 2021 카카였 μ±„μš©μ—°κ³„ν˜• 인턴십 【거리두기 ν™•μΈν•˜κΈ°γ€‘
    • [JAVA] 2020 카카였 인턴십 γ€μˆ˜μ‹ μ΅œλŒ€ν™”γ€‘
    우규이인우윀
    우규이인우윀
    개발자 κΏˆλ‚˜λ¬΄

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

    단좕킀

    λ‚΄ λΈ”λ‘œκ·Έ

    λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
    Q
    Q
    μƒˆ κΈ€ μ“°κΈ°
    W
    W

    λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

    κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
    E
    E
    λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
    C
    C

    λͺ¨λ“  μ˜μ—­

    이 νŽ˜μ΄μ§€μ˜ URL 볡사
    S
    S
    맨 μœ„λ‘œ 이동
    T
    T
    ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
    H
    H
    단좕킀 μ•ˆλ‚΄
    Shift + /
    ⇧ + /

    * λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.