C#

[프로그래머스 힌트/답/해석] 외계어 사전

Guk-blog 2024. 1. 30. 14:59
728x90
반응형

힌트

더보기

- Spell에 담긴 문자들을 모두 사용한 문자열이 존재하는지 찾는 것이다.

- spell ["a", "b", "c"] dic ["bcd","abdf", "cda", "aabc" ,"bca"]라면 bcd = false, abdf = false, cda = false, aabc = false, bca = true이므로 1을 리턴해준다

정답

더보기

방법 1

var arr = dic.Select(x => spell.Count(y => x.Contains(y) && x.Count(z => y== z.ToString())==1));
return arr.Count(x=> x==spell.Length)>0 ? 1 : 2;

방법 2

int existCount;
foreach(var d in dic){
    existCount=0;
    foreach(var sp in spell){
        if(d.Contains(sp) && d.Count(x=> sp == x.ToString())==1){
            existCount++;
            Console.WriteLine("{0} / {1} Contain {2}",d,sp, existCount);
        }
    }                
    if(existCount==spell.Length)return 1;
}
return 2;

해석

더보기
 var arr = dic.Select(x => spell.Count(y => x.Contains(y) && x.Count(z => y== z.ToString())==1));

 외계문자열 dic에서 spell의 문자가 포함되어 있으며 일치하는 개수가 1일 때의 경우에만 추가한다

spell.Count(y => x.Contains(y) && x.Count(z => y== z.ToString())==1)

spell에서 spell의 y문자가 포함되어 있고, dic내에 있는 문자열 x에서 spell의 문자 y가 1개일 때의 경우의 개수를 카운트한다 

return arr.Count(x=> x==spell.Length)>0 ? 1 : 2;

 arr내에 카운트한 개수가 spell의 길이와 일치하는 개수가 1 이상일 때 1을 아닐 때 2를 리턴한다

728x90
반응형