Post

๐Ÿ’ช๐Ÿป programmers Lv1(24.11.14 -3๋ฌธ์ œ)

๐Ÿ’ช๐Ÿป programmers Lv1(24.11.14 -3๋ฌธ์ œ)

65) ์‹คํŒจ์œจ

  1. HashMap ์‚ฌ์šฉํ•ด์„œ Key ๊ฐ’์—๋Š” ์Šคํ…Œ์ด์ง€ ๋ฒˆํ˜ธ, value ๊ฐ’์— ์‹คํŒจ์œจ ๋„ฃ๊ธฐ

  2. value ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  key ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— ๋„ฃ์–ด๋ณด๊ธฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.util.*;
class Solution {
    public int[] solution(int N, int[] stages) {
        int[] answer = new int[N];
        double[] fail = new double[N];
        Map<Integer, Double> map = new HashMap<>();
        
        for(int i=1;i<=N;i++)
        {
            double failureLate = 0; //์‹คํŒจ์œจ
            double failCnt = 0; // ์‹คํŒจํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜
            double sucCnt = 0; // ๋„๋‹ฌํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜
            
            for(int j=0;j<stages.length;j++)
            {
                if(stages[j]==i)
                {
                    failCnt++; //ํด๋ฆฌ์–ดํ•˜์ง€ ๋ชปํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜
                }
                if(stages[j]>=i)
                {
                    sucCnt++; // ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜
                }
            }
            map.put(i, failCnt/sucCnt);
            if(failCnt == 0 && sucCnt == 0)
                map.put(i,0.0);
        }
        
        List<Integer> list = new ArrayList<>(map.keySet());
        list.sort((o1, o2)-> map.get(o2).compareTo(map.get(o1)));
        
        for(int i=0;i<N;i++)
        {
            answer[i] = list.get(i);
        }
        
        
        return answer;
    }
}

Map<Integer, Double> map = new HashMap<>();์™€ HashMap<Integer, Double> map = new HashMap<>(); ์ฐจ์ด๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ ์‚ฌ์šฉํ•˜๋Š” ์ฐธ์กฐ ํƒ€์ž…์— ์žˆ๋‹ค.

Map์€ HashMap์˜ ์ธํ„ฐํŽ˜์ด์Šค๋กœ Map ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ, ์ดํ›„์— ์ฝ”๋“œ์—์„œ HashMap ์™ธ์— ๋‹ค๋ฅธ Map ๊ตฌํ˜„์ฒด(TreeMap, LinkedHashMap ๋“ฑ)๋กœ ์‰ฝ๊ฒŒ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Map ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ๊ถŒ์žฅ๋œ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋” ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ์„ฑ์ด ์ข‹๋‹ค.

  • ๋งŒ์•ฝ HashMap์˜ ํŠน์ • ๊ธฐ๋Šฅ์— ์˜์กดํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” HashMap ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•ด๋„ ๊ดœ์ฐฎ๋‹ค.

List<Integer> list = new ArrayList<>(map.keySet()); ์ฝ”๋“œ๋Š” ํ‚ค๋“ค์˜ ์ง‘ํ•ฉ(Set)์„ ๋ฆฌ์ŠคํŠธ(ArrayList)๋กœ ๋ณ€ํ™˜ํ•ด์„œ ํ‚ค๋“ค์„ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค.

list.sort((o1, o2) -> map.get(o2).compareTo(map.get(o1))); ๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

list.sort((o1, o2) -> map.get(o1).compareTo(map.get(o2))); ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.


HashMap

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ํ‚ค(Key), ๋ฐธ๋ฅ˜(Value)๊ฐ€ ์ง์„ ์ด๋ฃจ์–ด ์ €์žฅ๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ๋Š” ํ‚ค(Key) ๊ฐ’์œผ๋กœ ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ์ €์žฅ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ HashMap์€ ํŠน์ • ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ์œ„์น˜๋ฅผ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€, ์‚ญ์ œ, ํŠนํžˆ ๊ฒ€์ƒ‰์ด ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

๋•Œ๋ฌธ์— HashMap์€ ํ‚ค(Key) ๊ฐ’์„ ํ†ตํ•ด์„œ๋งŒ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ํ‚ค(key) ๊ฐ’์€ ์ค‘๋ณต๋  ์ˆ˜ ์—†๊ณ  ๋ฐธ๋ฅ˜(value) ๊ฐ’์€ ํ‚ค(key) ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ์ค‘๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ์„ ์–ธ
1
HashMap<Integer> map = new HashMap<>();
  • ๊ฐ’ ์ถ”๊ฐ€
1
2
map.put(1,"๋งˆ๋ฃจ");
map.put(2,"๋‘์œ ");
  • ๊ฐ’ ์‚ญ์ œ
1
2
map.remove(1); // key ๊ฐ’ 1 ์ œ๊ฑฐ
map.clear(); // ๋ชจ๋“  ๊ฐ’ ์ œ๊ฑฐ
  • ๊ฐ’ ์ถœ๋ ฅ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
System.out.println(map.get(2)); // ๋‘์œ 

//entrySet() ํ™œ์šฉ
for (Entry<Integer, String> entry : map.entrySet()) {
	System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}

//KeySet() ํ™œ์šฉ
for(Integer i : map.keySet()){ //์ €์žฅ๋œ key๊ฐ’ ํ™•์ธ
	System.out.println("[Key]:" + i + " [Value]:" + map.get(i));
}

//keySet().iterator()
Iterator<Integer> keys = map.keySet().iterator();
while(keys.hasNext()){
	int key = keys.next();
	System.out.println("[Key]:" + key + " [Value]:" + map.get(key));
}

entrySet()์€ key์™€ value ๋ชจ๋‘๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๊ณ  keySet()์€ key ๊ฐ’๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Iterator()๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค.


66) [PCCE ๊ธฐ์ถœ๋ฌธ์ œ] 9๋ฒˆ / ์ง€ํ ์ ‘๊ธฐ

  1. ์ง€ํ๋ฅผ ์ ‘์€ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•  ์ •์ˆ˜ ๋ณ€์ˆ˜ answer๋ฅผ ๋งŒ๋“ค๊ณ  0์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด bill์˜ ์ž‘์€ ๊ฐ’์ด wallet์˜ ์ž‘์€ ๊ฐ’ ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ bill์˜ ํฐ ๊ฐ’์ด wallet์˜ ํฐ ๊ฐ’ ๋ณด๋‹ค ํฐ ๋™์•ˆ ์•„๋ž˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. 2-1. bill[0]์ด bill[1]๋ณด๋‹ค ํฌ๋‹ค๋ฉด bill[0]์„ 2๋กœ ๋‚˜๋ˆ„๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. 2-2. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด bill[1]์„ 2๋กœ ๋‚˜๋ˆ„๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. 2-3. answer์„ 1 ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
  3. answer์„ returnํ•ฉ๋‹ˆ๋‹ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.*;
class Solution {
    public int solution(int[] wallet, int[] bill) {
        int answer = 0;
        
        Arrays.sort(wallet);
        Arrays.sort(bill);
        
        while(!fit(wallet, bill))
        {
            if(bill[0]>bill[1])
            {
                bill[0]/=2;
            }
            else{
                bill[1]/=2;
            }
            Arrays.sort(bill);
            answer++;
        }
        
        return answer;
    }
    public static boolean fit(int[] wallet, int[] bill)
    {
        return (bill[0]<=wallet[0] && bill[1] <=wallet[1]);
    }
}


67) ๋‹คํŠธ ๊ฒŒ์ž„

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import java.util.*;
class Solution {
    public int solution(String dartResult) {
        int answer = 0;
        int[] arr = new int[3];
        int idx = 0;
        String s = "";
        for(int i=0;i<dartResult.length();i++)
        {
            switch(dartResult.charAt(i))
            {
                case '*':
                    arr[idx-1]*=2;
                    if(idx>1)
                    {
                        arr[idx-2]*=2;
                    }
                    break;
                
                case '#':
                    arr[idx-1]*=-1;
                    break;
                case 'S':
                    arr[idx] = (int)Math.pow(Integer.parseInt(s),1);
                    idx++;
                    s = "";
                    break;
                case 'D':
                    arr[idx] = (int)Math.pow(Integer.parseInt(s),2);
                    idx++;
                    s = "";
                break;
                case 'T':
                    arr[idx] = (int)Math.pow(Integer.parseInt(s),3);
                    idx++;
                    s = "";
                break;
                
                default:
                    s+=String.valueOf(dartResult.charAt(i));
                    break;
            }
        }
        for(int i=0;i<arr.length;i++)
        {
            answer+=arr[i];
        }
        return answer;
    }
}
This post is licensed under CC BY 4.0 by the author.