프로그래머스 레벨 0 Day 16

Seunggyu Jung·2023년 4월 27일
0
post-thumbnail

1. Day 16-1. 편지

Q. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요.

1-1. 내 풀이

function solution(message) {
    return message.split("").length*2;
}

1-2. 해설

  • 문제에서 주어진 파라미터의 값은 문자열이기에 split("")으로 문자 1개씩으로 이루어진 배열을 만든다.
  • 새로 생성된 배열의 길이는 곧 문자의 개수와 같고, 글자의 크기가 2cm이므로 배열의 길이에 2를 곱하여 반환한다.

2. Day 16-2. 가장 큰 수 찾기

Q. 정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

2-1. 내 풀이

function solution(array) {
    return [Math.max(...array), array.indexOf(Math.max(...array))];
}

2-2. 해설

  • 파라미터의 배열 안의 요소 중, 가장 큰 수를 찾기 위해 해당 배열을 전개구문과 Math.max()를 사용한다.
  • 정답 배열의 두번째 요소에는 가장 큰 수의 인덱스가 와야하기에, indexOf()메서드로 인덱스를 찾는다.

3. Day 16-3. 문자열 계산하기

Q. my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.

3-1. 내 풀이

function solution(my_string) {
    my_string = my_string.split(" ")
    let answer = parseInt(my_string[0]);
    for (let i = 0; i < my_string.length; i++){
        if (my_string[i] === "+") {
            answer += parseInt(my_string[i+1]);
        } else if (my_string[i] === "-"){
            answer -= parseInt(my_string[i+1]);
        }
    }
    return  answer;
}

3-2. 해설

  • 파라미터의 식이 한 칸씩 띄어져 있는 다항식이므로, split(" ") 즉, 공백을 기준으로 나뉘어진 배열을 만든다.
  • 반복문을 사용하기 전에, 정답 변수에 배열의 첫번째 요소를 사전에 넣는다.
  • 연산자(+,-)를 찾는 반복문을 작성한다. 만약 요소가 "+"인 경우, 그 다음 요소를 정답 변수에 더하고, 반대의 경우, 그 다음 요소를 뺀다.

4. 배열의 유사도

Q. 두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.

4-1. 내 풀이

function solution(s1, s2) {
    return s1.filter((el) => s2.includes(el)).length;
}

4-2. 해설

  • 파라미터 중 한 개를 기준으로 삼아 filter와 includes를 사용하여 같은 요소가 있는지 확인한다.
  • 이후, 길이로 반환한다.
profile
감동을 주고픈 개발자(준비생)

0개의 댓글