[TIL]231201_프로그래머스 입문

ㅇㅖㅈㅣ·2023년 12월 1일
0

Today I Learned

목록 보기
36/93
post-thumbnail

👩🏻‍💻 Today Learn

  • 알고리즘 1문제
  • 심화주차 개인과제
    • 회원가입, 로그인

🔐 알고리즘 문제풀이

문제 1) 제일 작은 수 제거하기

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

풀이

처음 풀이

    function solution(arr) {
    let answer = [];
    answer = arr.sort((a,b)=>b-a)
    if (arr.length <= 1){
      return [-1]
    } else {
      answer.pop()
    }
    return answer;
}

// pop() 배열의 마지막 요소 제거하고 나머지 요소를 반환해줌
// 입출력 예시에 낚임

입출력 예시 배열의 숫자가 내림차순으로 정렬되어있어서 정렬하는것만 생각하여 풀었었다. 그 결과 채점할때는 성공이었는데 제출하니 다 실패가 되었다 ㅠㅠ

수정한 풀이

/*
function solution(arr) {
    arr.splice(arr.indexOf(Math.min(...arr)),1)
    arr.length <= 1 ? answer = [-1] : answer = arr
    return answer;
}
*/
function solution(arr) {
    if (arr.length <= 1) {
        return [-1]
    } else {
       arr.splice(arr.indexOf(Math.min(...arr)),1)
    }  
    return arr;
}

// indexOf() 배열에서 주어진 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 찾을 수 없는 경우 -1을 반환함

배열을 돌면서 1개 이상일때 splice()로 배열내의 가장작은 수 하나를 찾아서 거기서부터 하나만 잘라주고 다시 배열을 리턴해주니 성공이 되었다... 쩝


문제 2) 짝수 홀수 개수

정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

풀이

function solution(num_list) {
    let answer = [];
    answer[0] = num_list.filter((a)=> a % 2 ===0).length
    answer[1] = num_list.filter((a)=> a % 2 !==0).length
    return answer;
}

배열의 첫번째에는 2로 나누었을때 나머지가 0이되는, 즉 짝수만 필터링해서 그 개수를 구하고, 배열의 두번째에는 홀수를 구해서 반환!


문제 3) 중복된 숫자 개수

정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.

풀이

function solution(array, n) {
    let answer = 0;
    answer = array.filter((num)=>num === n).length
    return answer;
}

위에 풀었던 방법과 동일한 방법으로 풀 수 있었다.


문제 4) 배열 원소의 길이

문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.

풀이

function solution(strlist) {
    let answer = [];
    for (let i=0; i<strlist.length; i++){
        answer.push(strlist[i].length);
    }
    return answer;
}

배열을 돌면서 요소의 길이를 구한 후 각 요소의 단어길이를 구해서 배열에 push해주면 완료


✍🏻 회고

금요일 TIL은 가장 열심히 쓸 수있을 거라고 생각했는데 ㅎ (알고리즘 문제로 대체해봅니다~) 개인과제 마무리 후 과제에 대한 TIL을 작성해야겠다.

profile
웰씽킹_나는 경쟁력을 갖춘 FE개발자로 성장할 것이다.

0개의 댓글