[PS] BOJ 1157 ๋จ์ด ๊ณต๋ถ
ํ๊ทธ: PS
์นดํ ๊ณ ๋ฆฌ: PS
๋ฌธ์
ํ์ด
์ด ๋ฌธ์ ๋ ์๊ฐ์ด๊ณผ์ ์ ์ํ๋ฉด์ ์ฝ๋๋ฅผ ์์ฑ ํด์ผํ๋ค. 2์ค for ๋ฌธ์ผ๋ก ์ ๊ทผํ๋ ๊ฒฝ์ฐ์ ๋๋ถ๋ถ ์คํจํ๋ ๊ฒ ๊ฐ๋ค.
์ฒซ๋ฒ์งธ ์๋..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
String s = scan.next();
int length = s.length();
int[] arr = new int[length];
for (int i = 0; i < length; i++) {
int count = 0;
for (int j = 0; j < length; j++) {
if (String.valueOf(s.charAt(i)).equalsIgnoreCase(String.valueOf(s.charAt(j)))) {
arr[i] = ++count;
}
}
}
...
n * n
์ผ๋ก ์ ์ฒด ๋จ์ด์์ ๋ฐ๋ณต๋๋ ๋ฌธ์์ด์ ๊ฐฏ์๋งํผ ์ฆ๊ฐ์ํค๋ฉด์ ๋ฐฐ์ด์ ์ ์ฅํ๋ค๋ณด๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ์ปค์ง๋ ๊ฒฝ์ฐ์ ํ
์คํธ์ผ์ด์ค๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ค.
๋๋ฒ์งธ ์๋..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String s = scan.next().toUpperCase();
int length = s.length();
int[] arr = new int[length];
for (int i = 0; i < length; i++) {
char c = s.charAt(i);
arr[i]++;
for (int j = 0; j < i; j++) {
if (c == s.charAt(j)) {
arr[j]++;
arr[i]--;
}
}
}
...
๋๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์์ ๋ฐ๋ณตํ์๋ฅผ ์ค์ด๊ณ ์ฒ์ ๋ฌธ์์ด์ ๋ฐ์๋๋ถํฐ ๋๋ฌธ์๋ก ๋ณํํด ๋๊ณ ํ์ด๋ ์คํจํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ํ๋ค๋ณด๋ ๋์ค์ ์นด์ดํธ๊ฐ ์ ์ฅ๋ ๋ฐฐ์ด ์ธ๋ฑ์ค์ ํด๋นํ๋ ์ํ๋ฒณ ๊ธ์๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋ํด์๋ ์๊ฐ์ ํด์ผํ๋ค. ๊ฒฐ๊ตญ์ 2์ค for๋ฌธ ์์ฒด๊ฐ ๋ฌธ์ ๊ฐ ๋๋๊ฒ ๊ฐ์๋ค.
์์ค ์ฝ๋
2์ค for ๋ฌธ์ด ์ฌ์ฉ๋ ๋ถ๋ถ์ ์์ ํ๋ค. ์ ๋ ฅ๋ ๋ฌธ์์ด์ ํ๋ํ๋ ๋น๊ตํด ๊ฐ๋ฉด์ ์นด์ดํธ๋ฅผ ์ ํ์๊ฐ ์๋ค.
- 2์ค for ๋ฌธ ์ ๊ฑฐ
- ์ธ๋ฑ์ค์ ํด๋น ์ํ๋ฒณ ๋งคํ
์ด ๋๊ฐ์ง๋ฅผ ํ๋์ ๋ฐฐ์ด์์ ๊ด๋ฆฌ ํ ์ ์๋๋ก ๊ฐ ์ํ๋ฒณ์ด ๊ฐ์ง๊ณ ์๋ ๊ณ ์ ascii ์ฝ๋๋ฅผ ์ด์ฉํด ๋ฐฐ์ด์ ์ ์ฅํด๋๊ณ ์ด๊ฑธ๋ก ํ๋์ฉ ๋น๊ตํ๋ค.
1
arr[c - 'A']++;
์
๋ ฅ๋๋ ๋ฌธ์์ด์์ ๋ฌธ์ ํ๋์ฉ ๋ฐฐ์ด์ ์ ์ฅํ ๋ - 'A'
๋ฅผ ํ๊ฒ๋๋ฉด ๋ฐฐ์ด ์ธ๋ฑ์ค์ ๋ง์ถฐ์ ๋ฃ์ ์ ์๋ค.
์๋ฅผ ๋ค์ด c ์ 'A'
๊ฐ ๋ค์ด์ค๋ ๊ฒฝ์ฐ 'A' - 'A'
๋ 0์ด ๋๊ณ ๊ทธ๋๋ก ๋ฐฐ์ด ์ธ๋ฑ์ค 0๋ฒ๋ถํฐ ์ ์ฅ์ด ๊ฐ๋ฅํ๋ค.
์ถํ ๋ฐฐ์ด์์ ์ธ๋ฑ์ค๋ก ๊บผ๋ธ๊ฒ์ ๋ค์ ๋ฌธ์๋ก ๋ฐ๊พธ๋ ๊ณผ์ ๋ ๊ฐํธํ๋ค.
1
result = (char) ('A' + i);
๋๋ถ๋ถ์ 2์ค for ๋ฌธ ์๊ฐ์ด๊ณผ๊ฐ ๋์ค๋ ๊ฒฝ์ฐ์ ์ํ์ ๋ฏธ๋ฆฌ ์ค๋นํด๋๊ณ ๋น๊ตํด๊ฐ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์๋ณด์ธ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
...
String s = scan.next().toUpperCase();
int length = s.length();
int[] arr = new int[26];
for (int i = 0; i < length; i++) {
char c = s.charAt(i);
arr[c - 'A']++;
}
int max = 0;
char result = '?';
for (int i = 0; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
result = (char) ('A' + i);
} else if (max == arr[i]) {
result = '?';
}
}
System.out.println(result);
๋๊ธ๋จ๊ธฐ๊ธฐ