https://www.acmicpc.net/problem/1062
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N, K;
static int max = 0;
static boolean visit[] = new boolean[26];
static String[] sArr;
public static void dfs(int start, int count) {
/*
* ๊ธฐ์ ์ฌ๋ก: ์ฃผ์ด์ง K๊ฐ ๋งํผ ๋จ์ด๋ฅผ ๊ณจ๋์ ๋
* visit[]์ ์ฒดํฌ๋ ๋จ์ด๋ค๊ณผ ๋น๊ตํด์ ๋ฐฐ์ธ ์ ์๋ ๋จ์ด์ ์ต๋๊ฐ ๊ตฌํ๊ธฐ.
*/
if(count == K) {
int num = 0;
for(int i=0; i<sArr.length; i++) {
boolean flag = true;
for(int j=0; j<sArr[i].length(); j++) {
/* K๊ฐ๋ฅผ ๊ณจ๋์ ๋, ๊ณ ๋ฅธ ๋จ์ด๋ก ํด๋น ๋ฌธ์์ด์ ์ฝ์ ์ ์๋์ง ํ๋จ */
if(!visit[sArr[i].charAt(j) - 97]) {
flag = false;
break;
}
}
if(flag) num ++;
}
max = Math.max(max, num);
return;
}
// ์์ง K๊ฐ๋ฅผ ๋ฐฐ์ฐ์ง ์์ ๊ฒฝ์ฐ -> ์์ ํ์(์ํ๋ฒณ ๊ฐฏ์: 26๊ฐ)
for(int i=start; i<26; i++) {
if(!visit[i]) {
visit[i] = true;
dfs(i, count + 1);
visit[i] = false;
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
sArr = new String[N];
//char[] checkWords = {'a', 'n', 't', 'i', 'c'};
// ๋ชจ๋ ๋จ์ด๋ "anta-'๋ก ์์ํ๊ณ , "-tica"๋ก ๋๋จ. a n t i c
if(K<5) {
System.out.println("0");
return;
}
// ์ํ๋ฒณ = 26๊ฐ์ด๋ฏ๋ก 26์ด๋ฉด ๋ชจ๋ ์ฝ์ ์ ์์.
else if(K==26) {
System.out.println(N);
return;
}
else {
// ์ ๋์ฌ anta ์ ์ ๋ฏธ์ฌ tica ์ ๊ฑฐ.
for(int i=0; i<N; i++) {
String str = bf.readLine();
sArr[i] = str.substring(4, str.length()-4);
}
// a n t i c 5๊ฐ์ ๋จ์ด๋ ๋ฐ๋์ ํฌํจํด์ผ ํ๋ฏ๋ก -5
K -= 5;
// a n t i c -> ๋ฐฉ๋ฌธ ์ฒดํฌ
visit['a' - 97] = true;
visit['n' - 97] = true;
visit['t' - 97] = true;
visit['i' - 97] = true;
visit['c' - 97] = true;
// ์ฌ๊ท + ๋ฐฑํธ๋ํน์ ํตํด ์ต๋ ์ฝ์ ์ ์๋ ๋จ์ด ์ฐพ๊ธฐ
dfs(0, 0);
System.out.println(max);
}
bf.close();
}
}
ํ์ด
๊ณจ๋ ๋ฌธ์ ์์ง๋ง ๋๋ฆ ์งง์ ๋ณด์ฌ์ ๋ฅ์ฉ ๋ฌผ์๋๋ฐ.. ๋๋ฌด ์ด๋ ค์ ๋ค ........................................................
๋ฌธ์ ๋ฅผ ๋ณด๋ฉด N๊ฐ์ ๋จ์ด ์ค K๊ฐ์ ๋จ์ด ๋งํผ ๊ธ์๋ฅผ ํ์๋ค์๊ฒ ๊ฐ๋ฅด์น๊ณ , ํ์๋ค์ด ๋ฐฐ์ด K๊ฐ์ ๋จ์ด๋ก ์ฝ์ ์ ์๋ ์ต๋๊ฐ์ ๊ตฌํด์ผ ํ๋ค.
๋จ๊ทน์ธ์ด์ ๋ชจ๋ ๋จ์ด๋ "anta" ๋ก ์์ํ๊ณ , "tica"๋ก ๋๋๋ค.
์ฆ ์ 8๊ฐ์ค ์ค๋ณต๋๋ ๋จ์ด๋ a n t i c ์ด๋ค.
๋ฐ๋ผ์ ์ฃผ์ด์ง K๊ฐ 5๊ฐ๋ณด๋ค ์์ผ๋ฉด ์ด๋ ํ ๋จ์ด๋ฅผ ๊ฐ๋ฅด์น๋๋ผ๋ ์๋ฌด ๋จ์ด๋ ์ฝ์ ์ ์๋ค. => 0 ์ถ๋ ฅ
๋ฐ๋๋ก ๋ง์ฝ ์ฃผ์ด์ง K๊ฐ 26์ด๋ผ๋ฉด ? => ์ํ๋ฒณ์ 26๊น์ง๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ๋จ์ด๋ฅผ ์ฝ์ ์ ์๋ค. => N ์ถ๋ ฅ
์ด์ 5๊ฐ ~ 26๊ฐ ์ฌ์ด๋ฅผ ์๊ฐํด ๋ด์ผ ํ๋ค.
์ฌ๊ธฐ์๋ ๋ฐฐ์ฐ์ง ์์ ๋ชจ๋ ๋จ์ด๋ค์ ๋ํด ์์ ํ์ + ๋ฐฑํธ๋ํน์ ํตํด ๊ฐ์ฅ ๋ง์ด ์ฝ์ ์ ์๋ ๋จ์ด๋ฅผ ์ฐพ๋๋ค.
๋จผ์ ๋ชจ๋ ๋จ์ด์๋ anta, tica๊ฐ ํฌํจ๋์ด ์์ผ๋ฏ๋ก ์ ๋์ฌ "anta"์ ์ ๋ฏธ์ฌ "tica"๋ ์ ๊ฑฐํ๋ค.
๊ทธ๋ผ ์ฌ๊ธฐ์ ํ์๋ค์๊ฒ a n t i c 5๊ฐ์ ๋จ์ด๋ฅผ ๊ฐ๋ฅด์น ์ ์ด๋ค. ๋ฐ๋ผ์ K์ ๊ฐ์ 5๋งํผ ๋บ๋ค.
์ฌ๊ธฐ์ ๋ฐฐ์ ๊ฑฐ๋, ๋ฐฐ์ฐ์ง ๋ชปํ ์ํ๋ฒณ๋ค์ ํ์ํ๊ธฐ ์ํด boolean[] visit ๋ผ๋ ๋ฐฐ์ด์ ์ ์ธํ๋๋ฐ,.
๋ง์ฝ a๋ฅผ ๋ฐฐ์ ๋ค๋ฉด => visit[0] = true๋ก, c๋ฅผ ๋ฐฐ์ ๋ค๋ฉด visit[2] = true๋ก
์ํ๋ฒณ์ ์ซ์๋ก ๋งค์นญ์์ผ์(97์ ๋นผ๋ฉด ๋๋ค. ์์คํค์ฝ๋) ํด๋น ์ธ๋ฑ์ค์ ๊ฐ์ true๋ก ๋ฐ๊ฟ์ฃผ์๋ค.
a n t i c ์ด 5๊ฐ์ ์ํ๋ฒณ์ ๋ฌด์กฐ๊ฑด ๊ฐ๋ฅด์ณ์ผ ํ๋ฏ๋ก, ๊ธฐ๋ณธ true๋ก ์ค์ ํด์ค์ผ ํ๋ค.
๊ทธ๋ผ ๊ฐ๊ฐ visit[0] = visit[13] = visit[19] = visit[8] = visit[2] = true ๊ฐ ๊ธฐ๋ณธ ๋ฒ ์ด์ค๋ค.
๊ทธ ๋ค์์ผ๋ก, ์ํ๋ฒณ์์ K-5๊ฐ์ ์ํ๋ฒณ์ ์กฐํฉ์ผ๋ก ๋ฝ์์ค์ผ ํ๋ค.(์์๋ ์๊ด์๋ค.)
a b c ๋ฅผ ์๋ b a c ๋ฅผ ์๋ ์ฝ์ ์ ์๋ ๋จ์ด๋ ๋๊ฐ๊ธฐ ๋๋ฌธ์, ์์์ ์๋ฏธ๊ฐ ์๋ค.
์ฌ๊ทํธ์ถ์ ํตํด K๊ฐ๋งํผ ๊ณจ๋๋ค๋ฉด, ์ฝ์ ์ ์๋ ๋จ์ด๋ฅผ ์นด์ดํธ ํด์ผ ํ๋ค.
๋ง์ฝ "abcde"๋ผ๋ ๋จ์ด๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด, a~e๊น์ง 5๊ฐ์ ๋ฌธ์๋ฅผ ๋ฐ๋ณตํ๋ฉด์
ํ์ฌ ๊ทธ ๋ฌธ์๋ฅผ ์ธ๋ฑ์ค๋ก ํ๋ visit[] ๋ฐฐ์ด์ด false๋ก ์ค์ ๋์ด ์๋ค๋ฉด, ๊ทธ ๋จ์ด๋ ๋ฐฐ์ฐ์ง ์์ ๋จ์ด๋ค.
๋ฐ๋ผ์ ๋ค์๋ ๋ ๋ณผํ์์์ด false๋ก ์ค์ ํ๊ณ for๋ฌธ์ ํ์ถํ๋ฉด ๋๋ค.
๋ง์ฝ ๋ชจ๋ ๋จ์ด("abcde")๋ฅผ ํ์ํ๋๋ฐ, ๋ชจ๋ visit[] ๋ฐฐ์ด์ด true๋ผ๋ฉด ?
๊ทธ ๋จ์ด๋ ์ฝ์ ์ ์๋ ๋จ์ด์ด๋ฏ๋ก, ++ํด์ค๋ค.
๊ทธ ํ ์ด์ ์ K๊ฐ๋ฅผ ๊ณจ๋์๋, ์ฝ์ ์ ์๋ ๋จ์ด์ ๋น๊ตํด ์ต๋๊ฐ์ ์ฐพ๋๋ค.
๋๋ฌด ์ด๋ ต๋ค ........ ์์ง ์์ด๊ณผ ์กฐํฉ, ์ฌ๊ท, ๋ฐฑํธ๋ํน ์ ๋ํ ๊ฐ๋ ๋ ๋ถ์กฑํ๊ณ ์ดํด๋ ๋ถ์กฑํ๋ค...
๋จธ๋ฆฟ์์ผ๋ก ์๋ฌด๋ฆฌ ์ดํดํ๋ ค๊ณ ํด๋ ์ ์๋๊ณ ์ธ์ฐ๋ ๊ฒ ๊ฐ๋ค ......
์ฃผ๋ง์ด๋ ๋ค์์ฃผ๋ด๋ก ์๊ฐ๋ด์ ์์ด ์กฐํฉ ์์ ํ์์ ๋ํด ์ ๋ฆฌ๋ฅผ ํ๋ฒ ํด์ผํ ๊ฒ ๊ฐ๋ค..
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Codeforces] 431A: Black Square (0) | 2020.03.07 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ์์ฅ(ํด์) (0) | 2020.03.06 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ์ ํ๋ฒํธ ๋ชฉ๋ก(ํด์) (0) | 2020.03.05 |
[๋ฐฑ์ค] 1748๋ฒ: ์ ์ด์ด ์ฐ๊ธฐ 1(๊ตฌํ) (0) | 2020.03.05 |
[๋ฐฑ์ค] 1912๋ฒ: ์ฐ์ํฉ(DP) (0) | 2020.03.05 |
๋๊ธ