๐ช๐ป 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๊ฐ์ ๊ฐ์ ์ง์์ค๋ค.