JavaScript - 프로그래머스 레벨 : 1(10) - ORDER BY '정답률'

먹보·2023년 1월 12일
0

1. 숫자 문자열과 영단어

문제 : 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

  • 1478 → "one4seveneight"
  • 234567 → "23four5six7"
  • 10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

function solution(s) {
    s = s.replace(/zero/gi, 0)
    .replace(/one/gi, 1)
    .replace(/two/gi, 2)
    .replace(/three/gi, 3)
    .replace(/four/gi, 4)
    .replace(/five/gi, 5)
    .replace(/six/gi, 6)
    .replace(/seven/gi, 7)
    .replace(/eight/gi, 8)
    .replace(/nine/gi, 9)
    return Number(s);
}

🗒️코멘트 : NULL

2. 두 개 뽑아서 더하기

문제 : 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
*복수 Element들은 포함되면 안됨

function solution(numbers) {
    const sumList = [];
    for(let i = 0 ; i < numbers.length ; i++){
        for(let j = 0 ; j < numbers.length ; j ++){
            if(i != j){
                sumList.push(numbers[i]+numbers[j])
            }
        }
    }
    const unique = new Set(sumList.sort((a,b)=> a-b))
    const answer = Array.from(unique)
    return answer
}

🗒️코멘트 :
1. 자료구조 Set을 이용한 Unique 값 정리
2. 이 상황에서, Set에서 Array로 변경하는 방법에는 3가지가 있다고 한다

  • const answer = [n for (n of unique)];

  • const answer = [...unique];

  • const answer = Array.from(unique)
    3가지 방법 중 3번째 방법을 택한 이유는 1번의 방법의 경우 "deprecated"되진 않았지만 너무 old verison이라고 하며,
    2번째 방법은 3번째 방법보다 성능이 떨어진다고 해서 3번째 방법을 택했다.

    하지만 검색 결과 둘 다 O(n)의 Time Complexity를 갖는 것으로 판명 되었다..하하

3. 2016년

문제 : 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016
년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요.

요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT

입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.

function solution(a, b) {
    const days = ["SUN","MON","TUE","WED","THU","FRI","SAT"];
    const answer = new Date();
    
    answer.setFullYear(2016);
    answer.setMonth(a-1);
    answer.setDate(b);
    return days[answer.getDay()]
}

🗒️코멘트 : Date Class를 활용해 볼 수 있는 좋은 기회였다.

  • 실제 알고리즘으로 해결해보지는 않았지만..알고리즘 적용해서 푸는 것 보다는 더 오래 걸리는 것 같다.
profile
🍖먹은 만큼 성장하는 개발자👩‍💻

0개의 댓글