[프로그래머스/코딩테스트 모음/Javascript] 18

TED·2023년 9월 12일
0

Javascript CodingTest

목록 보기
26/63
post-thumbnail

< 오늘의 문제 >

  1. (최댓값 만들기 (2))[https://school.programmers.co.kr/learn/courses/30/lessons/120862]
  2. (문자열 정렬하기 (1))[https://school.programmers.co.kr/learn/courses/30/lessons/120850]
  3. (주사위의 개수)[https://school.programmers.co.kr/learn/courses/30/lessons/120845]

최댓값 만들기 (2)

function solution(numbers) {
    const answer = [];
    for(let i = 0 ; i < numbers.length; i++){
        for(let j = 0 ; j < numbers.length; j++){
            if(i !== j) {
                answer.push(numbers[i] * numbers[j])
            }
        }
    }
    return Math.max(...answer)
    // Math.max 함수는 배열 자체를 인수로 받지 않는다
    // 하지만 스프레드 연산자를 사용하면 배열의 요소를 개별적인 인수로 전달할 수 있다.
}
  • 나의 풀이
    : 일단 - * - 의 조건도 최댓값을 출력할 수 있는 문제였기때문에 모든 배열의 곱을 구해야했다.
    하지만 return에서 죽어도 값이 안나오고 Null값이 출력되서 알고보니, Math.max 함수는 배열을 인수도 받지않는다..
    그래서 스프레드연산자를 사용하고 answer안의 요소값만 따로 출력되게끔 풀이하였다.

문자열 정렬하기 (1)

// 실패 !!!!!!!!
function solution(my_string) {
    const answer = [];
    const numbersMystring = my_string.split('')
    for(let i = 0 ; i < numbersMystring.length ; i++){
        if(numbersMystring[i] % 1 === 0) {
            answer.push(numbersMystring[i])
        }
    }
    return answer.sort((a, b) => a - b)
}
  • 나의 실패 풀이!!!!!
    : 그냥 아무생각없이 쉽네 하면서 쭉쭉 풀어나갔는데, 죽어도 배열안의 요소값이 "" 에서 벗어나질않았다.
    join도 여기저기 사용해보고 별 쇼를 다했지만 포기하게됬고, 결국 정규식을 사용해서 풀이해야된다는걸 검색을 통해 알게되었다 ㅠㅠ..
function solution(my_string) {
    const numbers = my_string.match(/\d/g); // 숫자만 추출하여 배열로 저장
    const sortNumbers = numbers.map(Number).sort(); // 숫자로 변환하고 오름차순 정렬
    return sortNumbers;
}
  • 나의 검색 풀이
    \d: 이 부분은 정규 표현식에서 숫자(digit)를 나타낸다
    g: 이 부분은 "글로벌(global)"을 나타내며, 문자열 전체에서 모든 해당 패턴을 찾는다.
    배열안에서 숫자인 값만 match하여 뽑아내고, map으로 요소를 돌리고 Number를 통해 숫자형으로 바꿔준 뒤 오름차순했다.

주사위의 개수

// 실패!!!!!!
function solution(box, n) {
    var answer = 0;
    answer = (box[0] * box[1] * box[2]) / (n * * 3)
    return Math.floor(answer);
}
  • 나의 실패 풀이
    : n이 모서리의 길이라고해서 상자의 넓이 구하듯이 3제곱을하고 box넓이값에 나누면 당연히 답이 나온다고 생각했는데,
    수학의 무지가 여기서 드러나버렸다 ; 휴
function solution(box, n) {
    const width = Math.floor(box[0] / n);
    const length = Math.floor(box[1] / n);
    const height = Math.floor(box[2] / n);

    return x * y * z;
}
  • 나의 풀이
    : 상자 안에 주사위를 넣을 때, 주사위의 한 모서리가 상자의 한 변과 일치하도록 배치해야 했다.
    따라서 주사위 한 변의 길이가 n인 경우, 상자의 한 변 길이가 n으로 나누어 떨어져야 한다.
function solution(box, n) {
    let [width, length, height] = box;

    return Math.floor(width / n) * Math.floor(length / n) * Math.floor(height / n);

}
  • 다른 사람 풀이
    : 뭔가 내 풀이와 같지만 개인적으로 더 보기좋아서 가져왔다.
profile
컴맹 개발 입문자

0개의 댓글

Powered by GraphCDN, the GraphQL CDN