
์๋ ํ์ธ์! ์ค๋ ํ์ด๋ณผ ๋ฌธ์ ๋
๋ฐฑ์ค 1759๋ฒ ์ํธ๋ง๋ค๊ธฐ ๋ฌธ์ ์ ๋๋ค!
ํด๋น ๋ฌธ์ ๋ ๋ฐฑํธ๋ ํน์ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ํ ์ ์์ต๋๋ค!
ํ์ด
์ฐ์ ์ํธ๋ก ๋ง๋ค ์ ์๋ ์ํ๋ฒณ์ char[] list ์ ๋ฃ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ char[] list ๋ฅผ ์ํ๋ฒณ ์์ผ๋ก ์ ๋ ฌํฉ๋๋ค.
์ ๋ ฌํ๋ ์ด์ ๋ ๋ฌธ์ ์ ์ถ๋ ฅ ๋ถ๋ถ์์ ์ ๋ ฌ๋ ์์๋ก ์ถ๋ ฅ๋๋ผ๊ณ ํด์์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ ฌ๋ ์ํ๋ฒณ์
backTracking ๋ฉ์๋๋ฅผ ํตํด์ ๋ฉ์๋๋ฅผ ์คํํฉ๋๋ค.
์คํํ๋ฉด์ start ๊ฐ L๊ณผ ๋์ผํด์ง๋ฉด,
checkTheCode ์ด๋ผ๋ ๋ฉ์๋๋ฅผ ํตํด์
ํ๊ฐ์ ๋ชจ์๊ณผ ๋๊ฐ ์ด์์ ์์์ด ํฌํจ๋์ด์๋์ง ์ฒดํฌํ๊ณ ๋์
์ถ๋ ฅํด์ค๋๋ค.
๋ง์ฝ start ๊ฐ L๊ณผ ๋์ผํ์ง ์๋๋ค๋ฉด
for๋ฌธ์ ๋๋ฉด์ ํ๋ ํ๋์ฉ list์ ์๋ ์ํ๋ฒณ์ char[] code ์ ๋ฃ์ด์ค๋๋ค.
์ด๋ ํ๋จ์ ๋ฌธ์ ํ์ด์ฒ๋ผ ํ๋ํ๋ push ํด์ฃผ๊ณ ,
๋ง์ฝ start == L์ด ๋๋ฉด pop์ ํตํด์ ๋์จ ๊ฐ์ checkTheCode ํตํด์ ๋ง์ ๊ฒฝ์ฐ๋ง ์ถ๋ ฅํด์ค๋๋ค!

์ฝ๋
์ฝ๋์ ๋๋ค!
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
import java.util.*; | |
public class N1759 { | |
static int L, C; | |
static char[] list; | |
static char[] code; | |
public static void main(String[] args) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
// ์ ๋ ฅ | |
StringTokenizer st = new StringTokenizer(br.readLine()); | |
L = Integer.parseInt(st.nextToken()); | |
C = Integer.parseInt(st.nextToken()); | |
list = new char[C]; // ์ ๋ ฅ ๊ฐ๋ฅํ ์ํ๋ฒณ ์ ์ฅ | |
code = new char[L]; // ์ฝ๋๋ก ์ฌ์ฉํ ์ํ๋ฒณ ์ ์ฅ | |
// list ์ ์ ๋ ฅ ๊ฐ๋ฅํ ์ํ๋ฒณ ์ ์ฅ | |
st = new StringTokenizer(br.readLine()); | |
for (int i = 0; i < C; i++) { | |
list[i] = st.nextToken().charAt(0); | |
} | |
// ์ํ๋ฒณ ์ ๋ ฌ | |
Arrays.sort(list); | |
backTracking(0, 0); // ์กฐํฉ ์์ | |
br.close(); | |
} | |
public static void backTracking(int cnt, int start) { | |
if (start == L) { | |
if (checkTheCode()) { // ์กฐ๊ฑด์ ๋ง์ ๊ฒฝ์ฐ์๋ง ์ถ๋ ฅ | |
System.out.println(code); | |
} | |
return; | |
} else { | |
for (int i = cnt; i < C; i++) { | |
code[start] = list[i]; | |
backTracking(i + 1, start + 1); | |
} | |
} | |
} | |
/*** | |
* ์ต์ ํ๊ฐ์ ๋ชจ์, ์ต์ 2๊ฐ์ ์์์ธ์ง ํ์ธ | |
* @return : ํด๋น code ๊ฐ ๋ฌธ์ ์กฐ๊ฑด์ ๋ง์ผ๋ฉด true, ๋ง์ฝ ํ๋ฆฌ๋ฉด false | |
*/ | |
public static boolean checkTheCode() { | |
int vowel = 0; | |
int consonant = 0; | |
for (char x : code) { | |
if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u') { | |
vowel++; | |
} else { | |
consonant++; | |
} | |
} | |
if (vowel >= 1 && consonant >= 2) { | |
return true; | |
} | |
return false; | |
} | |
} |
'๐ป ๊ฐ๋ฐ๊ณต๋ถ > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Eric's ๋ฐฑ์ค] 27465๋ฒ - ์์๊ฐ ์๋ ์ - Java - KSA Automata Winter Contest (0) | 2023.02.12 |
---|---|
[Eric's ๋ฐฑ์ค] 27467๋ฒ - ์ํ ํด์ฆ - Java - KSA Automata Winter Contest (0) | 2023.02.12 |
[Eric's ๋ฐฑ์ค] 2583๋ฒ - ์์ญ ๊ตฌํ๊ธฐ - Java (0) | 2023.02.11 |
[Eric's ๋ฐฑ์ค] 1946๋ฒ - ์ ์ ์ฌ์ - Java (0) | 2023.02.09 |
[Eric's ๋ฐฑ์ค] 2217๋ฒ - ๋กํ - Java (0) | 2023.02.08 |