모음 사전

최진훈·2022년 4월 5일
0

programmers

목록 보기
61/73



이번문제는 예시를 봐야 이해가 훨씬 잘되는 것 같아서 예시를 첨부했다. 대충 문자별로 인덱스를가지고 어찌저찌 연산을 하는 방법으로 생각중인데 문제에 디테일한 부분이 좀 부족한 것 같다.
예를들어 AAAE다음이 AAAEA인것 같은데 AAAI로 헷갈리는 사람들이 있을 것이다. 어쨋든 word를 다섯자리의 문자라고 봤을때, 각 자리끼리의 규칙이 있을 것이고, 각 알파벳마다 규칙이 있을 것이다.
첫번째자리에 E가 왔을때와 두번째자리에 E가 왔을때의 간격이라거나 똑같이 세번째 자리에 I가 왔을때와 O가 왔을때 간격이라거나 이러한 일정한 차이를 계산할 수 있다면 문제를 풀 수 있을 것이다.
첫번째 A부터 몇가지의 문자열을 나열해보고 뒤에서 두번째자리가 바뀔때마다 사이에 6가지의 조합,
세번째자리가 바뀔때마다 사이에 31가지 조합이 존재하는것 까지는 알아냈다.
그말은 각 자리의 차이가 6,31,, 이런식으로 늘어난다는건데 그 이후를 알아내기가 힘들어서 질문하기를 찾아보던 중 도움이 되는 글을 발견하였다.

source : https://programmers.co.kr/questions/25140

이렇게 경우의 수를 계산하는 법은 생각하지 못했는데 이걸 참고하여 간격을 알아 낼 수 있었고, 이제 조건만 잘 달아주면 해결이 될 것이다.

  1. word의 원소들을 하나씩 꺼내서 각 알파벳을 확인한다.
  2. E일 경우 간격x1을 해준다.
  3. I일 경우 간격x2을 해준다.
  4. O일 경우 간격x3을 해준다.
  5. U일 경우 간격x4을 해준다.
  6. 자리별로 간격을 계산해주기위해 forEach가 아닌forEachIndexed를 사용한다.
  7. 인덱스가 0이면 첫번째자리 1이면 두번째자리 이런식이므로 각각 자리별 간격을 구한다.
  8. 연산결과를 answer에 넣어준다.

벌써부터 when이나 if가 잔뜩 사용될 것 같은 기분....

일단 레고레고

자리가 A일때 계산이 좀 달라져서 A가 아닐경우에만 계산식을 돌렸고, 마지막에 word의 길이를 더해줬다. 그리고 굳이 함수를 따로 만들지 않아도 되지만, 너무 반복되는 구조가 많아지는게 보기싫어서 이렇게 해보았다 ㅋㅋㅋㅋㅋ

테스트 통과~~~

profile
레고레고

0개의 댓글