๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1759)
<์ํธ ๋ง๋ค๊ธฐ>
๋ฌธ์
๋ฐ๋ก ์ด์ ์ต๋ฐฑ์ค ์กฐ๊ต๊ฐ ๋ฐฉ ์ด์ ๋ฅผ ์ฃผ๋จธ๋์ ๋ฃ์ ์ฑ ๊น๋นกํ๊ณ ์์ธ๋ก ๊ฐ ๋ฒ๋ฆฌ๋ ํฉ๋นํ ์ํฉ์ ์ง๋ฉดํ ์กฐ๊ต๋ค์, 702ํธ์ ์๋ก์ด ๋ณด์ ์์คํ ์ ์ค์นํ๊ธฐ๋ก ํ์๋ค. ์ด ๋ณด์ ์์คํ ์ ์ด์ ๊ฐ ์๋ ์ํธ๋ก ๋์ํ๊ฒ ๋์ด ์๋ ์์คํ ์ด๋ค.
์ํธ๋ ์๋ก ๋ค๋ฅธ L๊ฐ์ ์ํ๋ฒณ ์๋ฌธ์๋ค๋ก ๊ตฌ์ฑ๋๋ฉฐ ์ต์ ํ ๊ฐ์ ๋ชจ์(a, e, i, o, u)๊ณผ ์ต์ ๋ ๊ฐ์ ์์์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค๊ณ ์๋ ค์ ธ ์๋ค. ๋ํ ์ ๋ ฌ๋ ๋ฌธ์์ด์ ์ ํธํ๋ ์กฐ๊ต๋ค์ ์ฑํฅ์ผ๋ก ๋ฏธ๋ฃจ์ด ๋ณด์ ์ํธ๋ฅผ ์ด๋ฃจ๋ ์ํ๋ฒณ์ด ์ํธ์์ ์ฆ๊ฐํ๋ ์์๋ก ๋ฐฐ์ด๋์์ ๊ฒ์ด๋ผ๊ณ ์ถ์ธก๋๋ค. ์ฆ, abc๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ํธ์ด์ง๋ง bac๋ ๊ทธ๋ ์ง ์๋ค.
์ ๋ณด์ ์์คํ ์์ ์กฐ๊ต๋ค์ด ์ํธ๋ก ์ฌ์ฉํ์ ๋ฒํ ๋ฌธ์์ ์ข ๋ฅ๋ C๊ฐ์ง๊ฐ ์๋ค๊ณ ํ๋ค. ์ด ์ํ๋ฒณ์ ์ ์ํ ๋ฏผ์, ์์ ํ์ ๋ ์กฐ๊ต๋ค์ ๋ฐฉ์ ์นจํฌํ๊ธฐ ์ํด ์ํธ๋ฅผ ์ถ์ธกํด ๋ณด๋ ค๊ณ ํ๋ค. C๊ฐ์ ๋ฌธ์๋ค์ด ๋ชจ๋ ์ฃผ์ด์ก์ ๋, ๊ฐ๋ฅ์ฑ ์๋ ์ํธ๋ค์ ๋ชจ๋ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ ์ ์ L, C๊ฐ ์ฃผ์ด์ง๋ค. (3 ≤ L ≤ C ≤ 15) ๋ค์ ์ค์๋ C๊ฐ์ ๋ฌธ์๋ค์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ๋ฌธ์๋ค์ ์ํ๋ฒณ ์๋ฌธ์์ด๋ฉฐ, ์ค๋ณต๋๋ ๊ฒ์ ์๋ค.
์ถ๋ ฅ
๊ฐ ์ค์ ํ๋์ฉ, ์ฌ์ ์์ผ๋ก ๊ฐ๋ฅ์ฑ ์๋ ์ํธ๋ฅผ ๋ชจ๋ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
- my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class _1759_ {
static char[] result;
static void search(char[] arr, int limit, int idx, int start) {
if(idx==limit) {
int v_cnt=0;
char[]v= {'a','e','i','o','u'};
for(int i=0; i<limit; i++) { // ๋ชจ์ ๊ฐ์
for(int j=0; j<5; j++) {
if(result[i]==v[j]) {
v_cnt+=1;
}
}
}
if(v_cnt>=1 && (limit-v_cnt)>=2) { // ์ต์ ํ ๊ฐ์ ๋ชจ์, ์ต์ ๋ ๊ฐ์ ์์
for(int i=0; i<limit; i++) {
System.out.print(result[i]);
}
System.out.println();
}
return;
}
for(int i=start; i<arr.length; i++) {
result[idx]=arr[i];
search(arr, limit, idx+1, i+1);
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(bf.readLine());
int l=Integer.parseInt(st.nextToken());
int c=Integer.parseInt(st.nextToken());
char[]arr=new char[c];
st=new StringTokenizer(bf.readLine());
for(int i=0; i<c; i++) {
arr[i]=st.nextToken().charAt(0);
}
Arrays.sort(arr);
result=new char[l];
search(arr, l, 0,0);
}
}
- Main
- ์๋ก ๋ค๋ฅธ L๊ฐ์ ์ํ๋ฒณ, C๊ฐ์ ๋ฌธ์ ์ ๋ ฅ
- arr : C๊ฐ์ ๋ฌธ์ ์ ์ฅ
- ์ํ๋ฒณ์ด ์ฆ๊ฐํ๋ ์์๋ก ๋ฐฐ์ด๋์์ ๊ฒ์ด๋ฏ๋ก ์ ๋ ฌ ํ search ํจ์ ํธ์ถ
- search ( ์ํ๋ฒณ ๋ฐฐ์ด, L๊ฐ, index, ์์ ์์น)
- index์ L๊ฐ๊ฐ ๊ฐ๋ค๋ฉด
- result ๋ฐฐ์ด์์ ๋ชจ์์ ๊ฐ์ count
- ๋ชจ์์ ๊ฐ์๊ฐ ์ต์ ํ๋ ์ด์์ด๊ณ ์์์ด ์ต์ ๋ ๊ฐ ์ด์์ด๋ฉด ์ถ๋ ฅ
- ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ๊ตฌํ๊ธฐ
- ์ค๋ณต x, ์์ ์๊ด x -> ์กฐํฉ
- index์ L๊ฐ๊ฐ ๊ฐ๋ค๋ฉด
์๊ฐ๐ค
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 18405_๊ฒฝ์์ ์ ์ผ (1) | 2022.12.12 |
---|---|
[Baekjoon] 2206_๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (0) | 2022.10.23 |
[Baekjoon] 1715_์นด๋ ์ ๋ ฌํ๊ธฐ (0) | 2022.08.06 |
[Baekjoon] 15649, 15650, 15651, 15652 N๊ณผ M (0) | 2022.08.03 |
[Baekjoon] 2564_๊ฒฝ๋น์ (0) | 2022.06.10 |