๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1316
๐ ๋ฌธ์ ์์ฝ
- ๊ทธ๋ฃน ๋จ์ด: ๊ฐ์ ๋ฌธ์๊ฐ ์ฐ์ํด์ ๋์ค๋ ๋จ์ด.
aba โ (a๊ฐ ๋จ์ด์ ธ์ ๋ฑ์ฅ) โ ๊ทธ๋ฃน ๋จ์ด ์๋
abba โ (a๊ฐ ๋จ์ด์ ธ์ ๋ฑ์ฅ) โ ๊ทธ๋ฃน ๋จ์ด ์๋
abc โ
โ ๊ทธ๋ฃน ๋จ์ด
- ์ ๋ ฅ๋ N๊ฐ์ ๋จ์ด ์ค ๊ทธ๋ฃน ๋จ์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅ.
๐ ํ์ด ๋ฐ ์๊ณ ๋ฆฌ์ฆ
- ๋จ์ด๋ฅผ ์์์๋ถํฐ ํ์ํ๋ฉด์ ์ฐ์๋์ง ์์ ๋ฌธ์๊ฐ ๋์จ ๊ฒฝ์ฐ ์ฒดํฌ
- ํ์ฌ ๋ฌธ์๊ฐ ์ด์ ๋ฌธ์์ ๋ค๋ฅด๋ค๋ฉด, ์ด๋ฏธ ๋์จ ๋ฌธ์์ธ์ง ํ์ธ.
- ์ด์ ์ ๋ฑ์ฅํ ์ ์๋ค๋ฉด ๊ทธ๋ฃน ๋จ์ด๊ฐ ์๋ (false ๋ฐํ).
- ์ค๋ณต ๋ฌธ์ ์ฒดํฌ๋ฅผ ์ํด HashSet ์ฌ์ฉ
- ๋ฌธ์๊ฐ ๋ฑ์ฅํ๋์ง ๋น ๋ฅด๊ฒ ํ์ธ (O(1)).
- ๋ชจ๋ ๋จ์ด๋ฅผ ๊ฒ์ฌํ๊ณ ๊ทธ๋ฃน ๋จ์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅ
๐ก ์ฝ๋
public class Baekjoon_1316 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int ans = 0;
for (int i = 0; i < n; i++) {
String s = sc.next();
if (isGroupWord(s)) {
ans++;
}
}
System.out.println(ans);
}
private static boolean isGroupWord(String s) {
Set<Character> set = new HashSet<>();
char prev = s.charAt(0);
set.add(prev);
for (int i = 1; i < s.length(); i++) {
char now = s.charAt(i);
if (now != prev && set.contains(now)) { // ์ด์ ์ ๋์จ ๋ฌธ์๊ฐ ๋จ์ด์ ธ์ ๋ค์ ๋ฑ์ฅ
return false;
}
set.add(now);
prev = now;
}
return true;
}
}
๐ ์๊ฐ ๋ณต์ก๋ ๋ถ์
- ๊ฐ ๋จ์ด ๊ธธ์ด L์ ๋ํด O(L) ์ํ (HashSet์ O(1))
- N๊ฐ์ ๋จ์ด๋ฅผ ๊ฒ์ฌํ๋ฏ๋ก ์ด O(NL).
- ์ต์ ์ ๊ฒฝ์ฐ N = 100, L = 100 โ O(10,000)
'์๊ณ ๋ฆฌ์ฆ(JAVA)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 11054 "๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด" (JAVA) (0) | 2025.02.18 |
---|---|
๋ฐฑ์ค 11053 & 11722 "๊ฐ์ฅ ๊ธด ์ฆ๊ฐ/๊ฐ์ ๋ถ๋ถ ์์ด" (JAVA) (0) | 2025.02.18 |
๋ฐฑ์ค 1003 "ํผ๋ณด๋์น ํจ์" (JAVA) (0) | 2025.02.17 |
๋ฐฑ์ค 24268 "2022๋ ๋ฌด์์ด ํน๋ณํ ๊น" (JAVA) (0) | 2025.02.17 |
๋ฐฑ์ค 9935 "๋ฌธ์์ด ํญ๋ฐ" (JAVA) (0) | 2025.02.16 |
๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1316
๐ ๋ฌธ์ ์์ฝ
- ๊ทธ๋ฃน ๋จ์ด: ๊ฐ์ ๋ฌธ์๊ฐ ์ฐ์ํด์ ๋์ค๋ ๋จ์ด.
aba โ (a๊ฐ ๋จ์ด์ ธ์ ๋ฑ์ฅ) โ ๊ทธ๋ฃน ๋จ์ด ์๋
abba โ (a๊ฐ ๋จ์ด์ ธ์ ๋ฑ์ฅ) โ ๊ทธ๋ฃน ๋จ์ด ์๋
abc โ
โ ๊ทธ๋ฃน ๋จ์ด
- ์ ๋ ฅ๋ N๊ฐ์ ๋จ์ด ์ค ๊ทธ๋ฃน ๋จ์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅ.
๐ ํ์ด ๋ฐ ์๊ณ ๋ฆฌ์ฆ
- ๋จ์ด๋ฅผ ์์์๋ถํฐ ํ์ํ๋ฉด์ ์ฐ์๋์ง ์์ ๋ฌธ์๊ฐ ๋์จ ๊ฒฝ์ฐ ์ฒดํฌ
- ํ์ฌ ๋ฌธ์๊ฐ ์ด์ ๋ฌธ์์ ๋ค๋ฅด๋ค๋ฉด, ์ด๋ฏธ ๋์จ ๋ฌธ์์ธ์ง ํ์ธ.
- ์ด์ ์ ๋ฑ์ฅํ ์ ์๋ค๋ฉด ๊ทธ๋ฃน ๋จ์ด๊ฐ ์๋ (false ๋ฐํ).
- ์ค๋ณต ๋ฌธ์ ์ฒดํฌ๋ฅผ ์ํด HashSet ์ฌ์ฉ
- ๋ฌธ์๊ฐ ๋ฑ์ฅํ๋์ง ๋น ๋ฅด๊ฒ ํ์ธ (O(1)).
- ๋ชจ๋ ๋จ์ด๋ฅผ ๊ฒ์ฌํ๊ณ ๊ทธ๋ฃน ๋จ์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅ
๐ก ์ฝ๋
public class Baekjoon_1316 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int ans = 0;
for (int i = 0; i < n; i++) {
String s = sc.next();
if (isGroupWord(s)) {
ans++;
}
}
System.out.println(ans);
}
private static boolean isGroupWord(String s) {
Set<Character> set = new HashSet<>();
char prev = s.charAt(0);
set.add(prev);
for (int i = 1; i < s.length(); i++) {
char now = s.charAt(i);
if (now != prev && set.contains(now)) { // ์ด์ ์ ๋์จ ๋ฌธ์๊ฐ ๋จ์ด์ ธ์ ๋ค์ ๋ฑ์ฅ
return false;
}
set.add(now);
prev = now;
}
return true;
}
}
๐ ์๊ฐ ๋ณต์ก๋ ๋ถ์
- ๊ฐ ๋จ์ด ๊ธธ์ด L์ ๋ํด O(L) ์ํ (HashSet์ O(1))
- N๊ฐ์ ๋จ์ด๋ฅผ ๊ฒ์ฌํ๋ฏ๋ก ์ด O(NL).
- ์ต์ ์ ๊ฒฝ์ฐ N = 100, L = 100 โ O(10,000)
'์๊ณ ๋ฆฌ์ฆ(JAVA)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 11054 "๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด" (JAVA) (0) | 2025.02.18 |
---|---|
๋ฐฑ์ค 11053 & 11722 "๊ฐ์ฅ ๊ธด ์ฆ๊ฐ/๊ฐ์ ๋ถ๋ถ ์์ด" (JAVA) (0) | 2025.02.18 |
๋ฐฑ์ค 1003 "ํผ๋ณด๋์น ํจ์" (JAVA) (0) | 2025.02.17 |
๋ฐฑ์ค 24268 "2022๋ ๋ฌด์์ด ํน๋ณํ ๊น" (JAVA) (0) | 2025.02.17 |
๋ฐฑ์ค 9935 "๋ฌธ์์ด ํญ๋ฐ" (JAVA) (0) | 2025.02.16 |