프로그래머스/위클리 챌린지/모음 사전
글 작성자: Doublsb
https://programmers.co.kr/learn/courses/30/lessons/84512
풀이
- A, E, I, O, U만을 사용해 만들 수 있는 길이 5 이하의 모든 단어가 수록된 사전
- 사전 첫 단어는 A, 그 다음이 AA, 마지막이 UUUUU
- 단어 하나가 주어지면 사전의 몇 번째 단어인지 return
- "A"는 "10000"으로 생각하면 편하다
- 사전은 이 숫자들을 오름차순으로 정렬했다고 보면 된다
- 예를 들어, A => 10000, AA => 11000, UEI => 52300이다.
- 10000부터 55555까지 모든 가능성을 돌리면서, 주어진 단어가 발견되면 해당 횟수를 리턴하면 되겠다
C#
using System;
using System.Linq;
public class Solution {
public int solution(string word) {
int counter = 0;
string goal = convert(word);
for(int i=10000; i<=55555; i++)
{
if(isValid(i.ToString()))
{
counter++;
if(goal == i.ToString()) return counter;
}
}
return 0;
}
private bool isValid(string str){
int zeroIndex = str.IndexOf('0');
if(zeroIndex != -1
&& str.Substring(zeroIndex).Any(e => e != '0'))
{
return false;
}
else if(str.Any(e => NonValid.Contains(e))){
return false;
}
else return true;
}
private readonly char[] NonValid
= new char[] { '6', '7', '8', '9' };
private string convert(string str){
var result = "";
for(int i=0; i<5; i++){
if(str.Length - 1 >= i){
switch(str[i]){
case 'A':
result += '1';
break;
case 'E':
result += '2';
break;
case 'I':
result += '3';
break;
case 'O':
result += '4';
break;
case 'U':
result += '5';
break;
}
}
else result += '0';
}
return result;
}
}
결과
100.0 / 100.0
피드백
더 단순하게 경우의 수를 곱하는 형태의 수학 문제처럼 풀 수도 있을 것 같은데, 그 방법을 잘 모르겠음.
나는 그냥 컴퓨터한테 맡기기로 했다 ^w^...
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
프로그래머스/위클리 챌린지/입실 퇴실 (1) | 2021.09.23 |
---|---|
프로그래머스/위클리 챌린지/복서 정렬하기 (0) | 2021.09.06 |
프로그래머스/위클리 챌린지/직업군 추천하기 (0) | 2021.08.24 |
프로그래머스/위클리 챌린지/퍼즐 조각 채우기 (0) | 2021.08.18 |
프로그래머스/스택・큐/주식가격 (0) | 2021.08.13 |
댓글
이 글 공유하기
다른 글
-
프로그래머스/위클리 챌린지/입실 퇴실
프로그래머스/위클리 챌린지/입실 퇴실
2021.09.23 -
프로그래머스/위클리 챌린지/복서 정렬하기
프로그래머스/위클리 챌린지/복서 정렬하기
2021.09.06 -
프로그래머스/위클리 챌린지/직업군 추천하기
프로그래머스/위클리 챌린지/직업군 추천하기
2021.08.24 -
프로그래머스/위클리 챌린지/퍼즐 조각 채우기
프로그래머스/위클리 챌린지/퍼즐 조각 채우기
2021.08.18