Seize your moment! ๐Ÿ‘พ

์•ˆ๋…•ํ•˜์„ธ์š”. Eric์ž…๋‹ˆ๋‹ค. ์ œ ๋ธ”๋กœ๊ทธ์— ๋ฐฉ๋ฌธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ป ๊ฐœ๋ฐœ๊ณต๋ถ€/Algorithm

[Eric's ๋ฐฑ์ค€] 1759๋ฒˆ - ์•”ํ˜ธ ๋งŒ๋“ค๊ธฐ - JAVA

Eric_ko 2023. 2. 11. 20:30

์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜ ํ’€์–ด๋ณผ ๋ฌธ์ œ๋Š”

๋ฐฑ์ค€ 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;
}
}
view raw N1759.java hosted with โค by GitHub

 

Solved.ac ํ”„๋กœํ•„