[TIL] d+5

river·2022년 3월 11일
0

프로그래머스 자바스크립트 알고리즘

직사각형 별찍기

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);

    let result = "*".repeat(a)
    
    for (let i=0; i<b; i++) {
        console.log(result)    
    }
});

a만큼의 별을 b줄만큼 반복
repeat() : 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환




짝수와 홀수

function solution(num) {
    let result="";
    let a = num%2;
    
    if (a==0){
        result="Even";
    } else {
    	result="Odd";
    }
    return result;
}

num을 2로 나눈 나머지를 통해 짝수인지 홀수인지 판별하고, 나머지가 0일 경우(짝수) even을, 그 외의 경우 odd를 출력




가운데 글자 가져오기

function solution(s) {
    var answer = '';
    
    let a = s.length;
    let b = ~~(a/2);

    if(a%2==1) {
        answer = s[b];
    } else { answer=s.substr(b-1,2); }
    
    return answer;
}

문자열 s의 길이를 2로 나누어 길이가 홀수일 경우 b(2로 나눈 몪)번째의 문자를 출력.

반대로 짝수일 경우 b-1번째 문자로부터 2번째 문자까지 출력한다.

~~(a/b) : a를 b로 나누었을 때의 '몫'

.substr(a,b) : a번째로부터 b번째 문자까지




두 정수 사이의 합

function solution(a, b) {
    var answer = 0;

    if (b-a>0){
    	answer = (a+b)/2*(b-a+1);
    } else {
        answer = (a+b)/2*(a-b+1);
    }
    return answer;
}

등차수열의 합
양 끝항의 평균 x 항의 갯수
a가 b보다 큰 수일 경우가 있기 때문에 조건문으로 처리!

++
Math.abs()를 이용하면 음수를 양수로 변경할 수 있다...!
그러면 조건문 없이

return (a+b)/2*(Math.abs(b-a)+1);

한 줄 만으로 처리 가능............!




문자열을 정수로 바꾸기

function solution(s) {
    return Number(s)
}

점심 먹고 졸려가지고 제대로 읽지도 않고 s를 어떻게 숫자로 바꿔? 이러고 있었다ㅎ.ㅎㅋ
메소드 찾아보면서 별 거 아니었구나~ 하고 넘겼는데 return +s라는 어마어마한 풀이를 보고 충격먹음




없는 숫자 더하기

function solution(numbers) {
    let int = 45;
    let a = 0;
    let b = numbers.length;
    for(let i = 0; i < b; i++){
        a += numbers[i]
         }
    return int-a
}

0부터 9까지 배열의 총 합인 45에서 주어진 배열의 합을 빼버리면 되겠다! 는 생각은 금방 했는데, 모든 조건이 랜덤하게 주어진 배열의합을 어떻게 찾을지를 쓸데없이 오래 고민했다 그냥 0부터 계속 더해버리면 되는데... 앞에서 등차수열 한번 하고 왔다고...ㅋㅋㅋㅋㅋㅋㅋ reduce()를 이용해 한 줄로 줄인 코드가 있었는데 내일 다시 알아보기로...




profile
가보자고

0개의 댓글