์šฐ๊ทœ์ด์ธ์šฐ์œค
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 ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA

[JAVA] 2022 KAKAO BLIND RECRUITMENTใ€์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐใ€‘

2023. 4. 19. 14:38


๋ฌธ์ œ ์ž์ฒด๋Š” ๊ฐ„๋‹จํ–ˆ๋‹ค, ์ฝ”๋“œ๋Ÿ‰์ด ๋งŽ์•˜์„ ๋ฟ.ใ…Ž

 

HashMap ์ž๋ฃŒํ˜•์„ ์ด์šฉํ•ด์„œ,

 

์ž๋™์ฐจ๊ฐ€ IN ์ธ ๊ฒฝ์šฐ

[์ž๋™์ฐจ ๋ฒˆํ˜ธ = key, ์ž๋™์ฐจ ์ž…์ฐจ์‹œ๊ฐ„ = value]

๋กœ ์ €์žฅํ•œ๋‹ค.

 

์ž๋™์ฐจ๊ฐ€ OUT์ธ ๊ฒฝ์šฐ

map์—์„œ ์ž…์ฐจ์‹œ๊ฐ„์„ ์ถ”์ถœํ•œ ๋’ค, ์ด์šฉ์‹œ๊ฐ„์„ ๊ตฌํ•œ๋‹ค.

์ด์šฉ์‹œ๊ฐ„์€, ๋‹ค๋ฅธ map์— [์ž๋™์ฐจ ๋ฒˆํ˜ธ = key , ์ฃผ์ฐจ์žฅ ์ด์šฉ์‹œ๊ฐ„ = value ] ๋กœ ๊ธฐ๋กํ•ด๋‘๊ณ , ์ž…์ฐจ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•˜๋Š” map์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ๋Š” ์‚ญ์ œํ•œ๋‹ค.

 

์‚ญ์ œํ•˜๋Š” ์ด์œ ๋Š”, ๋‚˜์ค‘์— ์ถœ์ฐจ ๋‚ด์—ญ์ด ์—†๋Š” outํ•˜์ง€ ๋ชปํ•œ ์ฐจ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

 

๊ทธ๋ ‡๊ฒŒ, ์ด์šฉ์‹œ๊ฐ„์„ ๋‹ค ๊ธฐ๋กํ•œ ๋’ค, ์ถœ์ฐจํ•˜์ง€ ๋ชปํ•œ ์ฐจ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์ด์šฉ์‹œ๊ฐ„์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ฃผ์–ด์ง„ ์š”๊ธˆ ์ •์‚ฐ ๋ฐฉ๋ฒ•๋Œ€๋กœ ๊ณ„์‚ฐํ•œ ๋’ค, ์ž๋™์ฐจ ๋ฒˆํ˜ธ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์„œ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋์ด๋‹ค


// ์ž…์ฐจ ์ดํ›„ ์ถœ์ฐจ ๋‚ด์—ญ์ด ์—†๋‹ค๋ฉด 23:59 ์— ์ถœ์ฐจ๋œ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ
// ๋ˆ„์  ์ฃผ์ฐจ ์‹œ๊ฐ„์ด ๊ธฐ๋ณธ ์‹œ๊ฐ„ ์ดํ•˜๋ฉด ๊ธฐ๋ณธ์š”๊ธˆ
// ๋‹จ์œ„์‹œ๊ฐ„์œผ๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€์ง€ ์•Š์œผ๋ฉด ์˜ฌ๋ฆผ
import java.util.*;
class Solution {
    HashMap<String,String> map;
    HashMap<String,Integer> times;
    
    public int[] solution(int[] fees, String[] records) {
        map = new HashMap<>();
        times = new HashMap<>();
        
        
        for(String record : records){
            String[] info = record.split(" ");
            if(info[2].equals("IN")){
                map.put(info[1],info[0]);
            }else{
                int t = getTimeDiff(map.get(info[1]),info[0]);
                times.put(info[1],times.getOrDefault(info[1],0)+t);
                map.remove(info[1]);
            }
        }
        
        for(Map.Entry<String,String> entry: map.entrySet()){
            int t = getTimeDiff(entry.getValue(),"23:59");
            times.put(entry.getKey(),times.getOrDefault(entry.getKey(),0)+t);
        }
        
        
        int[] ans = new int[times.size()];
        
        List<int[]> list = new ArrayList<>();        
        for(Map.Entry<String,Integer> entry: times.entrySet()){
            list.add(new int[]{Integer.valueOf(entry.getKey()),calculate(fees,entry.getValue())});
        }
        
        Collections.sort(list,(a,b)->a[0]-b[0]);
        
        for(int i=0;i<ans.length;i++){
            ans[i]=list.get(i)[1];
        }
        
        return ans;
    }
    
    // ์ด์šฉ์‹œ๊ฐ„์„ ๋ฐ”ํƒ•์œผ๋กœ ์š”๊ธˆ์„ ๊ตฌํ•จ
    int calculate(int[] fees,int time){
        int result = fees[1];
        time-=fees[0];
        if(time<=0){
            return result;
        }
        result += (int)Math.ceil((double)time/fees[2])*fees[3];
        return result;
    }
    
    // ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ๊ตฌํ•จ
    int getTimeDiff(String time1,String time2){
        return convert(time2)-convert(time1);
    }
    
    // ์‹œ๊ฐ„์„ ๋ถ„์œผ๋กœ ๋‹จ์œ„ ํ†ต์ผ
    int convert(String time){
        String[] info = time.split(":");
        return Integer.parseInt(info[0])*60+Integer.parseInt(info[1]);
    }
}
    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [JAVA] 2018 KAKAO BLIND RECRUITMENTใ€ํ”„๋žœ์ฆˆ4๋ธ”๋กใ€‘
    • [JAVA] 2019 KAKAO BLIND RECRUITMENTใ€์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉใ€‘
    • [JAVA] 2018 KAKAO BLIND RECRUITMENTใ€n์ง„์ˆ˜ ๊ฒŒ์ž„ใ€‘
    • [JAVA] 2018 KAKAO BLIND RECRUITMENTใ€์••์ถ•ใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

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