[프로그래머스 Lv.0] 영어가 싫어요, 인덱스 바꾸기, 한 번만 등장한 문자, 약수 구하기

blockzzie·2023년 4월 23일
0

프로그래머스

목록 보기
45/52

영어가 싫어요

남의 답 1

function solution(numbers) {
    const num = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];

    //변수명을 헷갈리게 지어서 numbers.length까지 했었다.. 변수명도 잘 지어야겠다.. 😂
    for(let i = 0; i < num.length; i++){
      //split을 num[i] 기준으로 자르고 잘린곳을 i로 메꿔주는 방식(?)이다.
        numbers = numbers.split(num[i]).join(i)
    }

    //split은 string이라 마지막에 number로 형 변환을 해줬다.
    return Number(numbers)
}

남의 답 2

function solution(numbers) {
    let numStr = [ "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" ];

    numStr.forEach((str, idx) => {
        numbers = numbers.replaceAll(str, idx);
    });
    return Number(numbers);
}

나는 이 문제가 싫어요. 한참을 헤매다 답을 봤는데 split으로 나누어줄 수 있었던 것. split은 문자열에 쓰이고 구분자 기준으로 원본 문자열에서 구분자 삭제 후 나머지 반환한다. forEach는 매개변수 3개까지 입력 가능한데 forEach(current value, index, Array) 라는 것 forEach 내 Array는 forEach 매서드 호출한 배열

인덱스 바꾸기

나의 답

function solution(my_string, num1, num2) { 
    var answer = my_string.split('')
    var temp = answer[num1]
    answer[num1] = answer[num2] 
    answer[num2] = temp
    return  answer.join('')
}

내 답은 temp에 넣어서 할당, 할당 이렇게 했지만 맨 처음부터 구조분해 할당으로 [my_string[num1], my_string[num2]] = [my_string[num2], my_string[num1]]; 접근 가능

한 번만 등장한 문자

나의 답

function solution(s) {   
    var answer = '';
    var s = s.split('').sort()
    s.map(x => (s.indexOf(x) === s.lastIndexOf(x)) ? answer += x : answer += '' )
    return answer 
}

도저히 못 풀겠어서 답을 본 문제. indexOf, lastIndexOf 와 같이 인덱스로 찾고 값을 내는게 익숙하지 않다. 내일 다시 indexOf로 풀어보기. --> 맨앞에서 시작한 인덱스 숫자와 맨 뒤에서 시작한 인덱스 숫자 값이 같으면 한 번만 등장했다는 뜻이니 그거만 담기.

약수 구하기

나의 답

function solution(n) {
    var answer = [];
    for(i=1; i <= n; i++){
        (n % i === 0) ? answer.push(i) : ''
    }
    return answer;
}

배열에 넣는 것은 push / += 는 숫자 또는 문자열에 더해주는 1+1 = 2, 'a' + 'b' = 'ab'

profile
막무가내 코딩노트

0개의 댓글