알고리즘 공부 - Day12

설하나·2022년 11월 15일
0

알고리즘

목록 보기
12/22
post-thumbnail

알고리즘을 풀어보자!!!

🖥 프로그래머스 🖥

1. 암호 해독

[문제 상황]

암호화된 문자열 cipher를 주고받고 그 문자열에서 code의 배수 번째 글자만 진짜 암호인데 여기서 암호만 골라서 리턴

[풀이 코드]

function solution1(cipher, code) {
    var answer = '';
    cipher.split("").map((cur,idx)=>{
        if((idx+1)%code===0) answer+=cur
    })
    return answer
}

function solution2(cipher, code) {
    return cipher.split("").filter((cur,idx)=>{
        return (idx+1)%code===0
    }).join("")
}

[문제 해결 방향]

일단 배열에 적용되는 매서드를 사용하기 위해서 문자열을 split()를 사용해서 배열로 바꾸었다. 처음에는 map()을 통해서 code의 배수 번째 글자만 answer에 더해서 리턴하도록 구성해보았다.
그 후, 코드를 더 깔끔하게 구성하고자 filter를 사용해서 다시 알고리즘을 구성해보았다.


2. 최댓값 만들기

[문제 상황]

정수 배열 numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 리턴

[풀이 코드]

function solution(numbers) {
    var answer = -100000000;
    for(let i = 0;i<numbers.length;i++){
        for(let j=i+1;j<numbers.length;j++){
            const temp = numbers[i]*numbers[j]
            if(answer<temp) answer = temp
        }
    }
    return answer;
}

[문제 해결 방향]

numbers의 원소의 범위가 "-10,000 ≤ numbers의 원소 ≤ 10,000"이므로 최소값으로 -10,000 X 10,000인 값인 -100,000,000으로 answer를 할당하고 중첩 for()문을 이용해서 최대값을 리턴하도록하였다.

profile
Backend

0개의 댓글