프로그래머스 모음사전

KHW·2021년 8월 31일
0

코딩테스트

목록 보기
7/17
post-custom-banner

문제

100/100
1시간 30분 소요

나의 코드

function getIdx(word) {
  let answer = [];

  // 일단 겁나 웬만큼 만들어 0 1 2 3 4 5 6 으로만 된 숫자로
  for (let i = 0; i < 10000; i++) {
    answer.push(i.toString(6));
  }

  answer = answer
    // 0이 있는 것이랑 5자리 넘는것은 빼고
    .filter((val) => {
      return val.indexOf(0) < 0 && val.length < 6 ? true : false;
    })
    // 숫자를 문자로 변경
    .map((val) => {
      return val
        .replace(/1/g, "A")
        .replace(/2/g, "E")
        .replace(/3/g, "I")
        .replace(/4/g, "U")
        .replace(/5/g, "O");
    })
    //문자 정렬
    .sort();

  return answer.indexOf(word) + 1;
}

function solution(word) {
  return getIdx(word);
}

코드설명

일단 AEIOU를 12345로 대체한다 생각하고 이를 적용하기 위해 5진수를 처음에는 썼으나 01234로 00 000 0000을 각각 뽑아내질 못하여
6진수로 012345를 쓰고
filter 함수를 통해 0을 제거
그외의 추가 5자리 초과를 제거 한 나머지를 replace를 이용해 정렬한
위치의 IDX +1을 결과로 반환한다.

다른사람의 코드

function solution(words) {
    return words.split('').reduce((r, c, i) => r + [781, 156, 31, 6, 1][i] * ['A', 'E', 'I', 'O', 'U'].indexOf(c) + 1, 0);
}

.... 현타온다

+a

[1,2,3,4,5][1] 이런코드도 가능하다

profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자
post-custom-banner

0개의 댓글