Post

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

74) [PCCE ๊ธฐ์ถœ๋ฌธ์ œ] 9๋ฒˆ / ์ด์›ƒํ•œ ์นธ

1
2
3
4
5
6
7
8
1. ์ •์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜ n์„ ๋งŒ๋“ค๊ณ  board์˜ ๊ธธ์ด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
2. ๊ฐ™์€ ์ƒ‰์œผ๋กœ ์ƒ‰์น ๋œ ์นธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜ count๋ฅผ ๋งŒ๋“ค๊ณ  0์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
3. h์™€ w์˜ ๋ณ€ํ™”๋Ÿ‰์„ ์ €์žฅํ•  ์ •์ˆ˜ ๋ฆฌ์ŠคํŠธ dh, dw๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ๊ฐ [0, 1, -1, 0], [1, 0, 0, -1]์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
4. ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด i ๊ฐ’์„ 0๋ถ€ํ„ฐ 3๊นŒ์ง€ 1 ์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ์•„๋ž˜ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
    4-1. ์ฒดํฌํ•  ์นธ์˜ h, w ์ขŒํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜ h_check, w_check๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ๊ฐ h + dh[i], w + dw[i]๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    4-2. h_check๊ฐ€ 0 ์ด์ƒ n ๋ฏธ๋งŒ์ด๊ณ  w_check๊ฐ€ 0 ์ด์ƒ n ๋ฏธ๋งŒ์ด๋ผ๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
        4-2-a. board[h][w]์™€ board[h_check][w_check]์˜ ๊ฐ’์ด ๋™์ผํ•˜๋‹ค๋ฉด count์˜ ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
5. count์˜ ๊ฐ’์„ 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
import java.util.*;
class Solution {
    public int solution(String[][] board, int h, int w) {
        int n = board.length;
        int count = 0;
        
        int[] dh = {0, 1, -1 , 0};
        int[] dw = {1, 0, 0, -1};
        
        for(int i=0;i<=3;i++)
        {
            int h_check = h + dh[i];
            int w_check = w + dw[i];
            
            if(h_check >= 0 && h_check < n && w_check >=0 && w_check < n)
            {
                if(board[h][w].equals(board[h_check][w_check]))
                {
                    count++;
                }
            }
        }
        
        return count;
    }
}
  • ์กฐ๊ฑด์„ ๋ณด๋ฉด ์ถฉ๋ถ„ํžˆ ํ’€ ์ˆ˜ ์žˆ๋‹ค.


75) ์ˆซ์ž ์ง๊ฟ

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
import java.util.*;
class Solution {
    public String solution(String X, String Y) {
        StringBuilder answer = new StringBuilder();
        
        int[] cntX = new int[10];
        int[] cntY = new int[10];
        
        for(char ch : X.toCharArray())
        {
            cntX[ch-'0']++; // ๋ฌธ์ž -> ์ˆซ์ž, ch๊ฐ€ '3' ์ผ ๋•Œ, cntX[3]์ด 1 ์ฆ๊ฐ€
        }
        for(char ch : Y.toCharArray())
        {
            cntY[ch-'0']++;
        }
        
        for(int i=9;i>=0;i--)
        {
            int cnt = Math.min(cntX[i],cntY[i]);
            for(int j=0;j<cnt;j++)
            {
                answer.append(i);
            }
        }
        if(answer.length()==0)
        {
            return "-1";
        }
        if(answer.charAt(0) == '0')
        {
            return "0";
        }
        
        return answer.toString();
    }
}

์—ฌ๊ธฐ์„œ ch-'0'์€ ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

1
2
char ch = '1';
int n = ch - '0'; // 49 - 48 = 1, 0์˜ ASCII code ๊ฐ’ = 48

๋”ฐ๋ผ์„œ cntX[ch-'0']++์€ ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด์„œ ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ์นด์šดํŠธ ํ•ด์ฃผ๋Š” ์šฉ๋„์ด๋‹ค.

ex) 12321์˜ ์ˆ˜์ผ ๋•Œ, cntX[1] = 2, cntX[2] = 2, cntX[3] = 1์ด ๋˜๋Š” ๊ฒƒ.

Math.min(cntX[i], cntY[i])๋ฅผ ํ•˜๋Š” ์ด์œ ๋Š” ์ธ๋ฑ์Šค 9๋ถ€ํ„ฐ 0์˜ ์ธ๋ฑ์Šค๊นŒ์ง€ ๊ตฌํ•˜๋ฉด์„œ x์™€ y๊ฐ€ ์ง๊ถ์ด ๋˜๋Š” ๊ฐ’์„ ๊ตฌํ•ด์•ผ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

X : 5525, Y : 1255 ์ผ ๋•Œ cntX[5] = 3, cntY[5] = 2์ธ๋ฐ ์ง๊ฟ์ด ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” cntY[5] = 2์˜ ๊ฐ’์„ ๋”ฐ๋ผ์•ผ๋˜๋ฏ€๋กœ min ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ StringBuilder๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ answer.toString()์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด answer๋ฅผ String ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ๋œ๋‹ค.

์™œ๋ƒํ•˜๋ฉด StringBuilder๋Š” String์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‘˜์€ ๋‹ค๋ฅธ ํƒ€์ž…์ด๋‹ค.

1
2
3
4
5
public String solution(String X, String Y) {
    StringBuilder answer = new StringBuilder();
    // (๋ฌธ์ž์—ด ์กฐํ•ฉ ์ž‘์—…)
    return answer.toString();  // `StringBuilder`๋ฅผ `String`์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
}
  • String์€ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

  • StringBuilder๋Š” ๊ฐ€๋ณ€ ๊ฐ์ฒด๋กœ ๋ฌธ์ž์—ด์„ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.


76) ํ–„๋ฒ„๊ฑฐ ๋งŒ๋“ค๊ธฐ

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
import java.util.*;
class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        List<Integer> li = new ArrayList<>();
        
        for(int i=0;i<ingredient.length;i++)
        {
            li.add(ingredient[i]);
            
            if(li.size()>=4 &&
               li.get(li.size()-4) == 1 &&
               li.get(li.size()-3) == 2 &&
               li.get(li.size()-2) == 3 &&
               li.get(li.size()-1) == 1 )
            {
                answer++;
                for(int j=0;j<4;j++)
                {
                    li.remove(li.size()-1);
                }
            }
        }
        
        return answer;
    }
}

ArrayList๋ฅผ ์„ ์–ธํ•ด์„œ list์— ingredient ๋ฐฐ์—ด์„ ์ €์žฅํ•œ๋‹ค.

๋จผ์ €, ๋นต - ์•ผ์ฑ„ - ๊ณ ๊ธฐ - ๋นต์œผ๋กœ ๋˜์–ด์•ผ๋˜๋‹ˆ ํฌ๊ธฐ๋Š” 4 ์ด์ƒ์ด๋ฉด์„œ list ํฌ๊ธฐ์˜ ์ธ๋ฑ์Šค๋ฅผ -4 : 1, -3 : 2, -2 : 3, -1 : 1๋กœ ๋งž์ถฐ์ค€๋‹ค. ํ•ด๋‹น ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ์‹œ answer์˜ ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ๋‹ค์Œ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ’์„ ํ™•์ธํ•ด์•ผ๋˜๋‹ˆ answer์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ๋งˆ์ง€๋ง‰ 4๊ฐœ์˜ ๊ฐ’์„ ์ง€์›Œ์ค€๋‹ค.

This post is licensed under CC BY 4.0 by the author.