일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 금고털이 파이썬
- 백준 평범한배낭
- express
- 도커 컨테이너
- 백준 A->B
- MongoDB
- 백준 전쟁-전투
- 장애물인식프로그램 파이썬
- 지도자동구축 파이썬
- 백준 전쟁 파이썬
- 피아노체조 파이썬
- 소프티어 지도자동구축
- 백준
- 백준 점프 파이썬
- 백준 점프
- 파이썬 평범한배낭
- 프로그래머스
- jenkins
- 파이썬데이터분석라이브러리
- 등수매기기 파이썬
- 백준 바이러스
- 백준알파벳파이썬
- 소프티어 장애물인식프로그램
- 백준 등수매기기
- MySQL완전삭제
- CRUD
- 백준 예산
- 백준 피아노체조
- 1987파이썬
- express mongodb
- Today
- Total
바위 뚫는중
[프로그래머스] Lv2. 모음사전 본문
문제
문제 설명
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.
제한사항
- word의 길이는 1 이상 5 이하입니다.
- word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.
word result
"AAAAE" | 6 |
"AAAE" | 10 |
"I" | 1563 |
"EIO" | 1189 |
풀이
총 몇개의 단어가 나올 수 있을까??
한자리일때 경우의 수 5
두자리일때 25
세자리 125
네자리 625
다섯자리 3125
모두 더하면 3905의 경우의 수이다.
3905%5 = 781, 즉 각 AEIOU 첫글자로 시작가능한 단어는 781개다.
A가아닌 E로 시작하는 알파벳의 순서는 무조건 781 다음부터다.
처음에는 이해가 안갔음^^
오른쪽 알파벳이 AEIOU를 총 5번 거치고 1번을 더 지나야 하기때문에 5 + 1로 표현한다.
AAAAA AAAAE 의 차이 1 = 1
AAAA AAAE 차이 1*5 + 1 = 6
AAA AAE 차이 (1 * 5 + 1) * 5 + 1 = 31
AA AE 차이 ((1*5+1)*5+1)*5+1 ⇒ 156
A E 차이 (((1*5+1)*5+1)*5+1+*5+1 ⇒ 781
A와 E의 차이 781
AA와 AE의 차이
즉, 자릿수에 따라 781, 156, 31, 6, 1 순서대로 경우의 수가 발생한다.
class Solution {
public int solution(String word) {
String str = "AEIOU";
int[] x = {781,156,31,6,1}; // 1 ~ 5 자릿수 경우의수
int result = word.length();
int index = 0;
//글자 전체 길이만큼 반복
for(int i=0;i<word.length();i++){
// 단어가 AEIOU중 몇번쨰 인덱스인지 구한다
index = str.indexOf(word.charAt(i));
// 그 인덱스에 해당하는 자릿수를 곱하여 계산한다
result+=x[i]*index;
}
return result;
}
}
어려워서 이것저것 서칭했는데,
난 사람들이 너무똑똑해서 놀랍다.. 많이 풀면 저렇게 능력껏 할 수 있는걸까……ㅜㅜ
Lv2 치고 쉽다는 사람들이 많다. 난 오히려 반대라고 생각했는걸!
울지말자 마니풀자~
'Algorithms > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv2. 카펫, 완전탐색 (0) | 2023.09.23 |
---|---|
[프로그래머스] Lv2. 점프와 순간 이동 (0) | 2023.09.09 |
[프로그래머스] Lv2. 구명보트 (0) | 2023.08.29 |
[프로그래머스] Lv2. 영어 끝말잇기 (0) | 2023.08.29 |
[프로그래머스] Lv2. H-INDEX (0) | 2023.08.27 |