Post

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

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

programmers Lv1(24.10.17 - 3๋ฌธ์ œ)

52) ๋น„๋ฐ€์ง€๋„

  • ๋‹ต์•ˆ์„ ์ฐธ๊ณ ํ•จ.

    • ๐Ÿ“Œ ํ’€๋ ค๊ณ  ์‹œ๋„ ํ•œ ๋ฐฉ์‹

      • 1) n์ด ํ–‰, ์—ด ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋ƒ„. ๋‘ ์ •์ˆ˜ ๋ฐฐ์—ด์„ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

      • 2) | ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๊ณตํ†ต๋œ ๋ถ€๋ถ„ ์ถ”์ถœํ•˜๊ธฐ
      • 3) 1์„ #์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๊ฒฐ๊ณผ ์ถœ๋ ฅํ•˜๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.*;
class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
       
        for(int i=0;i<n;i++)
        {
            String st = Integer.toBinaryString(arr1[i] | arr2[i]);
            st = String.format("%" + n + "s", st).replace(' ', '0');
            answer[i] = st.replace('1','#').replace('0',' ');
        }
    
        return answer;
    }
}
  • Integer.toBinaryString() : 10์ง„์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜

  • | ์—ฐ์‚ฐ : ํ•ด๋‹น ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๊ณตํ†ต๋œ ๋ถ€๋ถ„ ์ถ”์ถœ

  • String.format("%"+n + "s", st) : %s๋Š” ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, n์ด ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ ๋งŒ์•ฝ 5๋ผ๊ณ  ํ•˜๊ณ  st = โ€˜101โ€™์ผ ๋•Œ, 5์ž๋ฆฌ๊ฐ€ ๋˜์–ด์•ผ๋˜๋ฏ€๋กœ ์•ž์— ๊ณต๋ฐฑ์ด 2๊ฐœ ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์ด๋‹ค. -> __101

  • .replace() : replace ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.



53) ๋ช…์˜ˆ์˜ ์ „๋‹น

ArrayList

  • ArrayList๋Š” Java์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋™์ ๋ฐฐ์—ด ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜๋กœ ํฌ๊ธฐ๊ฐ€ ๊ฐ€๋ณ€์ ์ธ ๋ฐฐ์—ด์ด๋‹ค. ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์กฐ์ •๋˜๊ณ  ๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค.

    • ๋ฐฐ์—ด์€ ์ค‘๊ฐ„์— ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ ค๋ฉด ์ง์ ‘ ์š”์†Œ๋ฅผ ์ด๋™ํ•ด์•ผ ํ•จ. ArrayList๋Š” ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ์ž๋™์ด์ง€๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆฌ๋‹ค.

    • ๋ฐฐ์—ด์€ ํŠน์ • ํƒ€์ž…๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ. ArrayList๋Š” ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•ด์„œ ์—ฌ๋Ÿฌ ํƒ€์ž… ์ €์žฅ ๊ฐ€๋Šฅ

    • ๋ฐฐ์—ด์€ ๊ณ ์ •๋œ ํฌ๊ธฐ, ArrayList๋Š” ์ž๋™์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚จ.

  • ์„ ์–ธ ๋ฐ ์ƒ์„ฑ

1
2
List<Integer> li = new ArrayList<>();
List<String> strLi = new ArrayList<>();
  • ์š”์†Œ๋ฅผ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
1
li.add();
  • ํŠน์ • ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ด
1
li.get(i);
  • ํŠน์ • ์ธ๋ฑ์Šค์— ์žˆ๋Š” ์š”์†Œ ์ œ๊ฑฐ
1
li.remove(i);
  • ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ ๋ฐ˜ํ™˜
1
li.size();
  • ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ ์ œ๊ฑฐ
1
li.clear();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.length];
        List<Integer> li = new ArrayList<>();
        
        for(int i=0;i<score.length;i++)
        {
            li.add(score[i]);
            if(li.size()>k)
            {
                li.remove(Collections.min(li));
            }
            answer[i] = Collections.min(li);
        }
        return answer;
    }
}

PriorityQueue

  • PriorityQueue๋Š” java์—์„œ ์ œ๊ณตํ•˜๋Š” ์šฐ์„  ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์ด๋‹ค. ์ด ํ๋Š” ์šฐ์„  ์ˆœ์œ„์— ๋”ฐ๋ผ ์š”์†Œ๋ฅผ ์ •๋ ฌํ•˜์—ฌ ์ €์žฅํ•˜๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์ตœ์†Œ๊ฐ’์ด ๋จผ์ € ๋‚˜์˜จ๋‹ค. ์ฆ‰, ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ํ์˜ ๋งจ ์•ž์— ์œ„์น˜ํ•œ๋‹ค.

    • ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ๋‚ด๋ถ€์ ์œผ๋กœ ์ž๋™์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.

    • ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์ด ๋˜๋ฉฐ, ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ Comparable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ Comparator๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    • PriorityQueue๋Š” null ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ์„ ์–ธ

1
PriorityQueue<Integer> pq = new PriorityQueue<>();
  • ์š”์†Œ ์ถ”๊ฐ€
1
pq.add();
  • ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’ ์กฐํšŒ
1
pq.peek();
  • ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’ ์ œ๊ฑฐ
1
pq.poll();
  • ํ์˜ ํฌ๊ธฐ
1
pq.size();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.*;
class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.length];
        
        PriorityQueue<Integer> pq = new PriorityQueue<>(); //์šฐ์„ ์ˆœ์œ„ ํ ์„ ์–ธ
        
        for(int i=0;i<score.length;i++)
        {
            pq.add(score[i]); //pq์— ์š”์†Œ ์ €์žฅ
            
            if(pq.size()>k) //pq์˜ ํฌ๊ธฐ๊ฐ€ k๋ณด๋‹ค ํฌ๋ฉด
            {
                pq.poll(); //๊ฐ€์žฅ ์ž‘์€ ๊ฐ’ ์ œ๊ฑฐ
            }
            
            answer[i] = pq.peek(); // ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’ ์กฐํšŒ
        }
        
        
        return answer;
    }
}



54) ์ถ”์–ต ์ ์ˆ˜

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        
        for(int i=0;i<photo.length;i++)
        {
            for(int j=0;j<photo[i].length;j++)
            {
                for(int k=0;k<name.length;k++)
                {
                    if(name[k].equals(photo[i][j]))
                    {
                        answer[i] += yearning[k];
                    }
                }
            }
        }
        return answer;
    }
}

HashMap

  • HashMap์€ java์—์„œ ์ œ๊ณตํ•˜๋Š” ํ‚ค-๊ฐ’ ์Œ์„ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ํ‚ค๋ฅผ ํ†ตํ•ด ๋น ๋ฅด๊ฒŒ ๊ฐ’์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

    • HashMap์€ ๊ฐ ํ‚ค์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ๋™์ผํ•œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๊ธฐ์กด ๊ฐ’์ด ๋ฎ์–ด์”Œ์›Œ์ง„๋‹ค.

    • ์ค‘๋ณต๋œ ํ‚ค๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ, ๊ฐ™์€ ๊ฐ’์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ํ‰๊ท ์ ์œผ๋กœ ์š”์†Œ์— ๋Œ€ํ•œ ์กฐํšŒ, ์ถ”๊ฐ€, ์‚ญ์ œ๊ฐ€ O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

    • ํ•˜๋‚˜์˜ null ํ‚ค์™€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ null ๊ฐ’์„ ํ—ˆ์šฉํ•œ๋‹ค.

    • ์š”์†Œ์˜ ์ €์žฅ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ˆœ์„œ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ LinkedHashMap์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์„ ์–ธ

1
HashMap<String, Integer> map = new HashMap<>();
  • ๊ฐ’ ์ถ”๊ฐ€
1
map.put("",);
  • ๊ฐ’ ์กฐํšŒ
1
map.get();
  • ๊ฐ’ ์ˆ˜์ •
1
map.put("", );
  • ํ‚ค ์กด์žฌ ํ™•์ธ
1
map.containsKey();
  • ํ‚ค-๊ฐ’ ์Œ ์‚ญ์ œ
1
map.remove();
  • ์ „์ฒด ํฌ๊ธฐ ํ™•์ธ
1
map.size();
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
import java.util.*;
class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        
        HashMap<String, Integer> map = new HashMap<>();
        
        for(int i=0;i<name.length;i++)
        {
            map.put(name[i],yearning[i]);
        }
        
        for(int i=0;i<photo.length;i++)
        {
            for(int j=0;j<photo[i].length;j++)
            {
                if(map.containsKey(photo[i][j]))
                {
                    answer[i] += map.get(photo[i][j]);
                }
            }
        }
        
        return answer;
    }
}
This post is licensed under CC BY 4.0 by the author.