๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 1759_์•”ํ˜ธ ๋งŒ๋“ค๊ธฐ

๋ฟŒ์•ผ._. 2022. 8. 15. 22:51

Gold V

๋ฌธ์ œ(์ถœ์ฒ˜: 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 -> ์กฐํ•ฉ

์ƒ๊ฐ๐Ÿค”