알고리즘 공부 - Day09

설하나·2022년 11월 10일
0

알고리즘

목록 보기
9/22
post-thumbnail

오늘은 알고리즘 문제를 다양하게 풀어보았다.

🖥 프로그래머스 🖥

1. 약수 배열

[문제 상황]

주어진 숫자 안에 약수들을 포함한 배열을 반환하는 문제

[풀이 코드]

function solution(n) {
    var answer = [];
    for(let i =1;i<=n;i++){
        if(n%i===0) answer.push(i)
    }
    return answer;
}

[문제 해결 방향]

1부터 주어진 숫자까지 for문을 돌면서 만약 수를 i로 나누었을대 나머지가 0이면 해당 값을 배열에 push하도록 하였다.


2. 중간 값 찾기

[문제 상황]

배열에서 숫자 크기 순서대로 정렬한 후 가운데 값을 반환

[풀이 코드]

function solution(array) {
    array.sort((x,y)=>{return x-y})
    return array[Math.floor(array.length/2)];
}

[문제 해결 방향]

sort()매서드로 배열을 오름차순으로 정렬하고 배열의 길이를 반으로 나누고 floor()를 사용해서 절반의 값을 반환하도록 하였다.


3. 중간 값 찾기

[문제 상황]

주어진 숫자 만큼 ' * '으로 직각삼각형을 출력

[풀이 코드]

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    for (let i = 1; i <= +input[0]; i++) console.log('*'.repeat(i));
});

[문제 해결 방향]

for문rhk repeat()를 사용해서 직각삼각형을 출력


4. 대문자는 소문자로 소문자는 대문자로

[문제 상황]

대문자는 소문자로 소문자는 대문자로 문자열을 바꿔서 리턴

[풀이 코드]

function solution(my_string) {
    return my_string.split("").map((ele)=>{
        const ascii = ele.charCodeAt( )
        if(65<=ascii&&ascii<=90) return String.fromCodePoint(ascii+32)
        if(97<=ascii&&ascii<=122) return String.fromCodePoint(ascii-32)
    }).join("")
}

[문제 해결 방향]

아스키 코드를 사용해서 문제를 해결했다. 아스키 코드에서 대문자와 소문자는 32의 차이가 난다. 이를 이용해서 if문을 작성하고 리턴한 후에 join()을 사용해서 문자열을 반환하였다.

profile
Backend

0개의 댓글