개발 이모저모/프로그래머스 알고리즘

[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(13)

creativeDeveloper! 2023. 5. 8. 10:37
728x90

■ 영어가 싫어요

function solution(numbers) {

    const obj = {
        "zero":0,
        "one":1,
        "two":2,
        "three":3,
        "four":4,
        "five":5,
        "six":6,
        "seven":7,
        "eight":8,
        "nine" :9,
    };
    let answer = "";
    let currentNumber="";
    for(let i=0; i<=numbers.length; i++){
        const char = numbers[i];
        if(/\d/.test(char)){
            answer += char;
        } else {
            currentNumber += char;
            if(obj[currentNumber] !== undefined){
                answer += obj[currentNumber];
                currentNumber = "";
            }
        }
    }
    return parseInt(answer);
}

 

  • 이 문제는 영어 문자열을 숫자로 변환한 값을 구하는 문제이다.
  • 먼저, 문자열과 숫자를 key와 value로 매핑해준다.
  • answer를 빈문자열로 초기화하고,
  • currentNumber라는 변수에는 현재 읽고 있는 영어 단어를 저장할것이다.
  • 우선은 똑같이 빈문자열로 초기화한다.
  • numbers의 길이만큼 반복문을 돌려서 numbers 문자열을 읽을 것이다.
  • 각 문자가 숫자인 경우에는 더한값을 answer에 누적해준다.
  • 영어 단어인 경우에는 currentNumber 변수에 해당 문자를 더해가며 현재 읽고 있는 영어단어를 만든다.
  • 만약 currentNumber 가 obj객체에 저장된 키와 일치한다면,
  • 해당값을 answer에 더하고 currentNumber 를 초기화한다.
  • 반복문이 끝나면 answer 문자열을 정수형으로 변환하여 반환한다.

■ 인덱스 바꾸기

function solution(my_string, num1, num2) {

    const arr = my_string.split("");
    
    let str1 = arr[num1];
    let str2 = arr[num2];
    
    arr.splice(num1,1,str2);
    arr.splice(num2,1,str1);
    
    return arr.join("");
}

 

  • 주어진 문자열 my_string을 split 메소드를 이용해서 여러개의 문자열로 나눈값을 arr 변수에 저장한다.
  • 매개변수로 주어진 num1 과 num2를 이용해서 arr 문자열의 인덱스값을 구한뒤 str1, str2에 저장한다.
  • 이제 splice함수를 이용해서 arr에서 num1 1개를 str2로 교체해준다.
  • 마찬가지로 num2도 str1으로 교체해준뒤, 
  • join함수를 사용해서 return해준다.

■ 한 번만 등장한 문자

 

  • 한번만 등장하는 문자를 저장하기 위해 onetime이라는 변수로 빈문자열로 초기화한다.
  • 반복문을 사용해서 임의의 문자열을 변수 char에 저장한다.
  • count를 0으로 초기화하고,
  • j에대한 반복문에서 if문을 사용해  char와 s[j]가 같다면 count가 증가한다.
  • 그리고 count와 1이 같다면 onetime의 값이 누적된다.
  • 마지막으로 answer의 값은 onetime을 split을 사용해 나눠주고 sort함수를 사용해 정렬하고
  • join 함수를 사용해 다시 합쳐준다.

■ 약수 구하기

 

  • 이 문제는 정수인 매개변수 n의 약수를 배열 형태로 구하는 문제이다.
  • 먼저 i가 1일때부터 n과 같아질때까지 반복문을 돌려준다.
  • 약수의 조건은 n을 i로 나누었을때 0이 되어야한다. => n % i === 0
  • 조건에 해당하는 수는 push를 사용해 배열로 담아준다.

728x90