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
'프로그래머스 > Lv.2' 카테고리의 다른 글
Summer/Winter Coding(~2018) > 방문 길이 - JAVA (0) | 2024.01.10 |
---|---|
코딩테스트 연습 > 뒤에 있는 큰 수 찾기 - JAVA (0) | 2024.01.09 |
2018 KAKAO BLIND RECRUITMENT > [3차] 압축 - JAVA (1) | 2024.01.06 |
2022 KAKAO BLIND RECRUITMENT > k진수에서 소수 개수 구하기 - JAVA (1) | 2024.01.04 |
코딩테스트 연습 > 프로세스 - JAVA (0) | 2024.01.02 |