프로그래머스/Lv.2
코딩테스트 연습 > 모음사전 - JAVA
아찌방
2024. 1. 7. 22:17
https://school.programmers.co.kr/learn/courses/30/lessons/84512
풀이 - 나의 생각
이런 문제는 수학적으로 푸는게 가장 좋다.
주어진 문자열이 사전에서 몇번째에 위치하는지를 찾는다.
예로
단어 | 순서 |
A | 1 |
AA | 2 |
AAAAA | 5 |
AAAAE | 6 |
AAAE | 10 |
이런식이다.
5자리가 최대로
A부터 시작해서 UUUUU로 끝난다.
AAAAA, AAAAE, AAAAI, AAAAO, AAAAU
이렇게 A, E, I, O, U 순으로 진행되는데
자릿수에 따라 1 + i( A, E, I, O, U 순서)* 5 로 단어의 위치가 증가하는 것을 볼 수 있다.
781, 156, 31, 6, 1 이런 방식으로 증가합니다.
5의 자리는 1씩 증가
예) AAAAA = 5, AAAAE = 6
4의 자리는 6씩 증가
예) AAAA = 4, AAAE = 10
3의 자리는 31씩 증가
예) AAA = 3, AAE = 34
2의 자리는 156씩 증가
예) AA = 2, AE = 158
1의 자리는 781씩 증가합니다.
예) A = 4, E = 782
이걸 수식화 하면
answer+= 1 + words.indexOf(A,E,I,O,U 순서)*(전체 단어 수/=5);
이렇게 됩니다.
per은 전체 단어의 개수입니다.
코드
import java.util.*;
class Solution {
public int solution(String word) {
int answer = 0, per = 3905;
String words = "AEIOU";
for(String s : word.split("")){
answer+= 1 + words.indexOf(s)*(per/=5);
}
return answer;
}
}
728x90