이번문제는 예시를 봐야 이해가 훨씬 잘되는 것 같아서 예시를 첨부했다. 대충 문자별로 인덱스를가지고 어찌저찌 연산을 하는 방법으로 생각중인데 문제에 디테일한 부분이 좀 부족한 것 같다.
예를들어 AAAE다음이 AAAEA인것 같은데 AAAI로 헷갈리는 사람들이 있을 것이다. 어쨋든 word
를 다섯자리의 문자라고 봤을때, 각 자리끼리의 규칙이 있을 것이고, 각 알파벳마다 규칙이 있을 것이다.
첫번째자리에 E가 왔을때와 두번째자리에 E가 왔을때의 간격이라거나 똑같이 세번째 자리에 I가 왔을때와 O가 왔을때 간격이라거나 이러한 일정한 차이를 계산할 수 있다면 문제를 풀 수 있을 것이다.
첫번째 A부터 몇가지의 문자열을 나열해보고 뒤에서 두번째자리가 바뀔때마다 사이에 6가지의 조합,
세번째자리가 바뀔때마다 사이에 31가지 조합이 존재하는것 까지는 알아냈다.
그말은 각 자리의 차이가 6,31,, 이런식으로 늘어난다는건데 그 이후를 알아내기가 힘들어서 질문하기를 찾아보던 중 도움이 되는 글을 발견하였다.
이렇게 경우의 수를 계산하는 법은 생각하지 못했는데 이걸 참고하여 간격을 알아 낼 수 있었고, 이제 조건만 잘 달아주면 해결이 될 것이다.
word
의 원소들을 하나씩 꺼내서 각 알파벳을 확인한다.E
일 경우 간격x1
을 해준다.I
일 경우 간격x2
을 해준다.O
일 경우 간격x3
을 해준다.U
일 경우 간격x4
을 해준다.forEach
가 아닌forEachIndexed
를 사용한다.answer
에 넣어준다.벌써부터 when
이나 if
가 잔뜩 사용될 것 같은 기분....
일단 레고레고
자리가 A일때 계산이 좀 달라져서 A가 아닐경우에만 계산식을 돌렸고, 마지막에 word
의 길이를 더해줬다. 그리고 굳이 함수를 따로 만들지 않아도 되지만, 너무 반복되는 구조가 많아지는게 보기싫어서 이렇게 해보았다 ㅋㅋㅋㅋㅋ
테스트 통과~~~