DAILY

5월 4일 알고리즘 연습문제

ssund 2023. 5. 5. 12:14

 

https://school.programmers.co.kr/learn/courses/30/lessons/181934?language=javascript 

const operations = {
    '>=': (n, m) => n >= m,
    '<=': (n, m) => n <= m,
    '>!': (n, m) => n > m,
    '<!': (n, m) => n < m,
}

function solution(ineq, eq, n, m) {
    var answer = 0;
    
    const op = operations[ineq + eq];
    answer = Number(op(n, m));
    return answer;
}

solution("<", "=", 20, 50, 1);

 

https://school.programmers.co.kr/learn/courses/30/lessons/181932


1. for문 break, continue
for문 내 if문에서 return, break를 사용하면 for 에서 빠져나온다.
if문에서 다음코드는 실행하지 않고 for문을 돌리고 싶다면 continue;를 사용하면 된다. 

 

2. true, false를 숫자로 변환했을 때 

Number(true); //1

Number(false); //0

 

3. for of 에서 index사용하기

for of를 사용하면 index를 사용할 수 없다. 이런경우에 entries()를 사용해 index를 받을 수 있다. 

for (const [index, value] of ['a', 'b', 'c', 'd', 'e'].entries()) {
  console.log(index, value); 
}
/*
0 'a'
1 'b'
2 'c'
3 'd'
4 'e'
*/
function solution(code) {
    var answer = '';
    let mode = false;
  
    for(let [idx, letter] of code.split('').entries()) {
        if (letter === '1') {
          mode = !mode;
          continue;
        } 
        
        // mode가 0이거나, 짝수일 때
        if (Number(mode) === 0 && idx % 2 === 0) {
          answer += letter;
          continue;
        }

        // mode가 1이거나, 홀수일 때
        if (Number(mode) === 1 && idx % 2 !== 0) {
          answer += letter;
          continue;
        }
    }
    
    answer = answer || 'EMPTY';
    return answer;
}

solution("abc1abc1abc");

 

등차수열

https://school.programmers.co.kr/learn/courses/30/lessons/181931

 

https://school.programmers.co.kr/learn/courses/30/lessons/181930


1. 배열에 같은 숫자가 몇개인지 체크하는 로직 
간단한 방법으로 new Set()을 사용하는 방법이 있다. 
중복값을 처리해준다. 
new Set([ 1, 2, 3, 3, 4, 5]) => [1, 2, 3, 4, 5];

2. 제곱근 함수

Math.pow(7, 2) === 7 ** 2

const calculate = (numbers, times) => {
    const [a, b, c] = numbers;
    let result = 1;

    for(let i = 1; i <= times; i++) {
        result *= a ** i + b ** i + c ** i;
    }
    
    return result;
}

function solution(a, b, c) {
    var answer = 0;
    const numbers = [a, b, c];
  
    answer = calculate(numbers, (numbers.length + 1) - new Set(numbers).size);
    
    return answer;
}

//solution(1, 3, 3)

 

https://school.programmers.co.kr/learn/courses/30/lessons/181929

function solution(num_list) {
  return Math.pow(num_list.reduce((a, b) => a + b), 2) > num_list.reduce((a, b) => a * b) ? 1: 0
}

solution([3, 4, 5, 2, 1])

 

Math.abs()

숫자의 절대값 리턴 (음수값을 넣으면 절대값이 나온다.)

 

팩토리얼 

1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것

4! = 1 * 2 * 3 * 4