TIL 230828(월)

박지은·2023년 8월 28일
0

TIL

목록 보기
11/36

node.js 입문강의

오늘은 node.js 입문강의 2주차 내용을 듣는다. 새로운 내용을 배우니까 또 진도가 잘 나가지 않는다. level 1 과제도 진행해야하다보니까 어떤 식으로 접근해야할지가 가장 큰 고민인데, 오늘 기술 매니저님께 얘기를 하니,
강의를 처음에 전반을 다 이해하겠다는 마음보다는 강의를 들으면서 따라하면서 여기에 이렇게 쓰이구나 정도의 흐름을 이해하고 과제를 하면서 이해를 해보는 방향을 조금 더 추천해주셨다.

메타인지가 중요하다고 해서 이해하고 설명할 수 있을 정도로 했는데, 지금은 마감 시간을 지키는 것이 더 중요하니 일단 강의를 먼저 듣고, 실습부터 진행을 해봐야겠다.

오늘은 진도를 나가는데 더 급급해서
알고리즘 문제 2개 푼 풀이 내용을 공유한다.

오늘 프로그래머스 문제 2문제 풀이

1. 제일 작은 수 제거하기

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

제한조건
arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다

// 문제 : 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
/**수도코딩 
 * 먼저 배열이 빈 배열이면 [-1]; 로 리턴하고, 
 * 배열의 가장 최소값을 제외한 내용만 배열에 넣어주면 된다. Math.min(...arr) ... spread 연산자를 써서 arr 복사 
 */

function solution(arr){
    let answer = [];
    if (arr.length === 1){
        return [-1];
    }

    for(let i = 0; i< arr.length; i++){
        if(arr[i] !== Math.min(...arr)){
            answer.push(arr[i]);
        }
    }
    return answer;
}

let arr = [4, 3, 2, 1];
console.log(solution(arr));


// 다른 사람 풀이 삼항연산자 Math.min(...arr)을 변수에 저장
//filter 함수 공부 
function solution2(arr) {
    const min = Math.min(...arr);
    return arr.length !== 1 ? arr.filter( i => i !== min) : [-1]
} 

console.log(solution2(arr))

/** filter 함수 Array.prototype.filter()
 * filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환
 */

// filter 예시 
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter((word) => word.length > 6);

console.log(result);// [ 'exuberant', 'destruction', 'present' ]

2. 가운데 글자 가져오기

문제설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

제한사항
s는 길이가 1 이상, 100이하인 스트링입니다.

// 문제 : 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
/**수도코딩
 * 문자열 s 를 배열로 반환하기 .split() 메서드 
 * 짝수, 홀수인 경우를 나눠서 짝수는 가운데 2글자가 반환되게, 홀수면 1글자가 반환되게
 * Math.floor() 내림 메서드 사용 
 */

function solution(s) {
    let answer = '';
    let words = s.split('');

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

let s = "abcde"; // "qwer"
console.log(solution(s)); // c \ we

// 다른 사람 풀이 substr() 메서드, 삼항연산자
/** substr() 메서드는 문자열에서 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환 
*/
// substr( , ) 처음에 지수자리부터 두번째는 글자수 (만약 두번째가 비어있으면 끝까지 반환)
// Math.ceil() -1 을 해 준 이유? 지수는 0부터 시작하기 때문에 맞춰줌 
// 문자열의 길이가 홀 짝 인지에 따라 글자수만큼 반환 
function solution1(s) {
    return s.substr(Math.ceil(s.length/2) -1, s.length % 2 === 0 ? 2 : 1);
}

console.log(solution1(s)); //c

// substr() 메서드 예시 
const str = 'Mozilla';

console.log(str.substr(1,2)); // oz
console.log(str.substr(2)); //zilla
profile
성장하는뿅아리

0개의 댓글

관련 채용 정보