이를 풀기 위해선 규칙을 찾는 것이 중요했다. 본인이 찾은 규칙은 아래와 같다.
- 규칙
- 5자리가 아니라면, A를 채운다.
- 첫번째 자리에서 사전 순으로 업그레이드를 한다.
- 이때 U라면 그 공간이 빈공간이 되고, 다음 자리 값이 업그레이드 된다.
- 설계 과정
- 5자리 배열 만든다.
- num을 계속 세줄건데, 입력 word가 같아질때까지 아래과정 수행
- 빈 공간이 있다면 A를 추가
- 빈 공간이 없다면, 업그레이드
-> 이때 업그레이드 할게 U라면 그 부분을 빈공간으로 두고, 다음 자리값을 업그레이드
function solution(word) {
var answer = 0;
var num = new Array(5).fill("");
var alphaArr = ["U","O","I","E","A"];
word = word.split("");
while(true){
//값이 없는게 있다면
//입력값과 배열을 합쳤을때 같다면 리턴
if(num.join("")===word.join(""))break;
//num에 공백이 있다면 A로 채움
if(num.indexOf("")!==-1){
num[num.indexOf("")] = "A";
answer++;
}
// 전부 채워졌다면
else{
//뒤부터 체크
var i = 4;
while(true){
//요소가 U라면 삭제하고, 다음 꺼를 체크
if(num[i]==="U"){
num[i] = "";
i--;
}
else{
// 체크 한 값을 업그레이드
num[i] = alphaArr[alphaArr.indexOf(num[i])-1];
answer++;
break;
}
}
}
}
return answer;
}
매번 좋은 풀이 진심으로 감사드립니다 잘 참고하고 있어요!