Post

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

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

71) ๋Œ€์ถฉ ๋งŒ๋“  ์žํŒ

HashMap์„ ์‚ฌ์šฉํ•˜์—ฌ key, value๋ฅผ ์ €์žฅํ•˜๊ธฐ

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
import java.util.*;
class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        int[] answer = new int[targets.length];
        Map<Character, Integer> map = new HashMap<>();
        
        for(String s : keymap)
        {
            for(int i=0;i<s.length();i++)
            {
                char key = s.charAt(i);
                int value = map.getOrDefault(key, i+1);
                map.put(key, Math.min(value, i+1));
            }
        }
        
        for(int i=0;i<targets.length;i++)
        {
            for(int j=0;j<targets[i].length();j++)
            {
                char key = targets[i].charAt(j);
                
                if(map.containsKey(key))
                {
                    answer[i] += map.get(key);
                }
                else{
                    answer[i] = -1;
                    break;
                }
            }
        }
        return answer;
    }
}

HashMap์„ ์‚ฌ์šฉํ•˜์—ฌ key, value๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ, ํŠน์ • ํ‚ค์— ๋Œ€ํ•œ ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Œ.

  • put(key, value): ์ง€์ •๋œ ํ‚ค์— ๋Œ€ํ•œ ๊ฐ’์„ ์ €์žฅ

  • get(key): ์ง€์ •๋œ ํ‚ค์— ๋Œ€ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜. ํ‚ค๊ฐ€ ์—†๋‹ค๋ฉด null์„ ๋ฐ˜ํ™˜.
  • containsKey(key): ํŠน์ • ํ‚ค๊ฐ€ HashMap์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•จ.
  • getOrDefault(key, defaultValue): ํŠน์ • ํ‚ค๊ฐ€ ์žˆ์œผ๋ฉด ํ•ด๋‹น ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์—†์œผ๋ฉด ์ง€์ •๋œ ๊ธฐ๋ณธ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ.
1
2
3
4
5
6
7
Map<Character, Integer> map = new HashMap<>();
map.put('A', 1); // 'A'๋ผ๋Š” ํ‚ค์— 1์„ ์ €์žฅ
map.put('B', 2); // 'B'๋ผ๋Š” ํ‚ค์— 2๋ฅผ ์ €์žฅ

// 'A'๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜, ์—†๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’ 5 ๋ฐ˜ํ™˜
int valueA = map.getOrDefault('A', 5); // ๊ฒฐ๊ณผ: 1
int valueC = map.getOrDefault('C', 5); // ๊ฒฐ๊ณผ: 5 ('C'๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ)


72) ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

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 String solution(String[] participant, String[] completion) {
        String answer = "";
        Map<String, Integer> map = new HashMap<>();
        
        for(String s : participant)
        {
            map.put(s, map.getOrDefault(s,0)+1);
        }
        
        for(String s : completion)
        {
            map.put(s, map.get(s)-1);
        }
        
        for(String s : map.keySet())
        {
            if(map.get(s) > 0)
            {
                answer = s;
                break;
            }
        }
        
        return answer;
    }
}

map.getOrDefault(s, 0) + 1 : ํ•ด๋‹น ์ด๋ฆ„ s๊ฐ€ ์ด๋ฏธ map์— ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉด ๊ทธ ๊ฐ’(๋“ฑ์žฅ ํšŸ์ˆ˜)์„ ๊ฐ€์ ธ์˜ค๊ณ , ์ €์žฅ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ 0์„ ์‚ฌ์šฉํ•จ.

์ฆ‰, ๋‹ค 0์œผ๋กœ ์ €์žฅ๋œ ๋’ค, ์ด๋ฆ„์— +1 ์„ ํ•จ. ์ฆ‰, ์ด๋ฆ„์ด 2๊ฐœ ๋‚˜์˜ฌ๊ฒฝ์šฐ 2๋กœ ์ €์žฅ.

map.put(s, map.get(s)-1) : ์™„์ฃผ์ž์˜ ์ด๋ฆ„์„ map์—์„œ ์ฐพ์•„์„œ ๊ทธ ๊ฐ’์„ 1 ๊ฐ์†Œ

map.keySet() : ๋ชจ๋“  ํ‚ค๋ฅผ ์ˆœํšŒ


73) ์ฒด์œก๋ฒ•

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ์ตœ์ ์ธ ์„ ํƒ์„ ๋ฐ˜๋ณตํ•ด์„œ ์ตœ์ข…์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉ.

  1. ๋นŒ๋ฆด ์ˆ˜ ์žˆ๋Š” ์ฒด์œก๋ณต์„ ๋ฐ”๋กœ ๋นŒ๋ ค์ฃผ๋Š” ์ตœ์ ์˜ ์„ ํƒ์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ „์ฒด ํ•™์ƒ ์ค‘ ๊ฐ€๋Šฅํ•œ ๋งŽ์€ ํ•™์ƒ์ด ์ฒด์œก๋ณต์„ ๊ฐ€์ง€๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ.

  2. ๊ทธ๋ฆฌ๋”” ๋ฐฉ์‹์œผ๋กœ ๊ฐ ํ•™์ƒ์ด ์ฒด์œก๋ณต์„ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ. ํ•œ ํ•™์ƒ์ด ์ž์‹ ์˜ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ฃผ๋ฉด, ๊ทธ ์ฒด์œก๋ณต์€ ๋” ์ด์ƒ ๋‹ค๋ฅธ ํ•™์ƒ์—๊ฒŒ ๋นŒ๋ ค์ค„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฐ”๋กœ ๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐํ•˜์—ฌ ๋” ๋‚˜์€ ์ตœ์ ์˜ ๊ฒฐ๊ณผ๋ฅผ ์œ ์ง€.

  3. ์ฒด์œก๋ณต์ด ํ•„์š”ํ•œ ํ•™์ƒ์„ ์ˆœ์„œ๋Œ€๋กœ ํ™•์ธํ•˜๋ฉด์„œ ๋นŒ๋ฆด ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ์ตœ์ ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์Œ.

ํ•ต์‹ฌ ํฌ์ธํŠธ

  • ์—ฌ๋ถ„์ด ์žˆ๋Š” ํ•™์ƒ์ด ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ€๊นŒ์šด ๋ฒˆํ˜ธ๋ถ€ํ„ฐ ๋นŒ๋ ค์ฃผ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ตœ์ ์˜ ์„ ํƒ.

  • ๊ฐ ์žƒ์–ด๋ฒ„๋ฆฐ ํ•™์ƒ์„ ํ™•์ธํ•˜๋ฉฐ ๋นŒ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ•™์ƒ์ด ์žˆ๋‹ค๋ฉด ๋นŒ๋ ค์ฃผ๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ฒด์œก๋ณต์ด ์—†๋Š” ์ƒํƒœ๋กœ ๋‚จ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์„ฑ.

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[] lost, int[] reserve) {
        int answer = n;
        
        Set<Integer> lostSet = new HashSet<>();
        Set<Integer> reserveSet = new HashSet<>();
        
        for(int l : lost)
        {
            lostSet.add(l);
        }
        for(int r : reserve)
        {
            if(lostSet.contains(r))
            {
                lostSet.remove(r);
            }
            else{
                reserveSet.add(r);
            }
        }
        
        for(int l : lostSet)
        {
            if(reserveSet.contains(l-1))
            {
                reserveSet.remove(l-1);
            }
            else if(reserveSet.contains(l+1))
            {
                reserveSet.remove(l+1);
            }
            else{
                answer--; 
            }
        }
        
        return answer;
    }
}
This post is licensed under CC BY 4.0 by the author.