알고리즘 문제

[7~9일차 JS] 프로그래머스 LV.1

잼굴 2022. 11. 1. 11:00

문제 1. 음양 더하기

 

 

문제 풀이:

1. 원하는 값을 담을 빈 배열을 만든다.

2. 반복문을 통해서 sign의 i번째 원소가 true라면 i번째 absolutes를 빈배열에 넣어준다.

3. sign의 i번째 원소가 false라면 i번째 absolutes 값에 마이너스를 곱해서 빈배열에 넣어준다.

4. 빈배열의 값을 모두 더해준다.

 

function solution(absolutes, signs) {
    let hmm = []
    let answer = 0

    for(j=0; j<signs.length; j++){
        if(signs[j]==true){
            hmm.push(absolutes[j])
        }
        else{hmm.push(-absolutes[j])}
    }
    for(i=0; i<hmm.length; i++){
        answer +=hmm[i]
    }
    return answer;
}

 

문제 2  없는 숫자 더하기

 

 

문제 풀이: 

1. 비교할 배열을 만든다.

2. 배열끼리 비교해서 없는 숫자만 찾아낸다.

3. 모두 더해준다.

 

function solution(numbers) {
    let bigyo = [0,1,2,3,4,5,6,7,8,9]
    var answer = bigyo.filter(x=> !numbers.includes(x))   
    answer = answer.reduce((a,b)=>(a+b))
    return answer;
}

 

문제 3. 가운데 글자 가져오기

 

문제 풀이:

1. s값을 객체로 바꾼다.

2. s의 길이가 짝수라면 가운데 2개값을

3. s의 길이가 홀수라면 정 가운데 값만 가져온다.

4. 홀수인 경우 s의 길이가 2로나누면  2.5, 3.5 이렇게 되기때문에 내림(Math.floor)을 이용해야한다.

function solution(s) {
    var answer = '';
   s =  s.split('');
    if(s.length%2==0){
        answer = s[(s.length/2)-1]+s[(s.length/2)]
    }
    else {
       answer = s[Math.floor((s.length/2))]
    }
    return answer;
}

 

문제 4. 수박수박수박수박수박수?

 

 

문제 풀이:

1. do while 반복문을 사용한다.

2. if문을 통해 i가 홀수라면 "수"를 짝수라면 "박"을 더해준다.

3. i가 n일때 까지 반복한다.

 

function solution(n) {
    var answer = '';
    i=1
    do{
       if(i%2==1){answer += "수"}
        else{answer+="박"}
        i++
    }
    while(i<n+1)
    return answer;
}

 

 

문제 5. 내적

 

문제풀이: 

1. for 반복문을 이용한다.

2. a의 같은 순서 원소랑 b의 같은 순서 원소랑 곱해준다.

3. 다 더해준다

 

function solution(a, b) {
    var answer = 0;
    for(i=0; i<a.length; i++){
        answer += (a[i]*b[i])
    }
    return answer;
}

 

 

문제 6. 문자열 내림차순으로 배치하기

 

문제풀이: 

1. s를 배열로 만들고 내림차순으로 만든다음 다시 문자열로 바꾼다

2. 문자열에서 쉼표를 지운다

 

function solution(s) {
    var answer = '';
    answer = s.split('').sort().reverse().join().replace(/,/g,'')
    return answer;
}