본문 바로가기
알고리즘/Programmers

[TIL] 2023.03.20 Programmers 문제 풀기

by heereal 2023. 3. 20.

Today I Learned

  • Programmers 문제 풀기
  • 기술면접 준비

 


Programmers 문제 풀기

부족한 금액 계산하기

나의 풀이

function solution(price, money, count) {
    let fee = Array(count).fill().reduce((acc, cur, i) => acc + price * ( i + 1 ), 0)
    return money > fee ? 0 : Math.abs(money - fee);
}

Array, fill로 배열을 만든 후에 reduce 메서드로 전체 금액을 더한다.

 

 

대문자와 소문자

나의 풀이

function solution(my_string) {
    return my_string.split("").map((str) => str === str.toUpperCase() ? str.toLowerCase() : str.toUpperCase()).join("");
}

 

 

주사위의 개수

나의 풀이

function solution(box, n) {
    return Math.floor(box[0] / n) * Math.floor(box[1] / n) * Math.floor(box[2] / n)
}

문제에 직육면체가 등장하는데 이해가 잘 안 돼서 직접 그려보면서 했다ㅋㅋ

 

 

다른 사람의 풀이

function solution(box, n) {
    let [width, length, height] = box;
    return Math.floor(width / n) * Math.floor(length / n) * Math.floor(height / n);
}

구조분해할당으로 배열의 요소를 개별 변수로 사용할 수도 있다.

 


회고

오늘 알게 된 사실 하나. for문보다 map이 속도가 더 느리다고 한다. 나는 for문은 좀 지저분한 느낌이라 map 메서드 쓰는 걸 선호하는데 굉장히 충격적인(?) 사실이었다😱

출처 https://blog.naver.com/thdwlsgus0/222269338961

 

 

프로그래머스는 한동안 1단계 정답률 높은 순으로 풀다가 머리 식힐 겸 좀 간단한 문제들을 풀고 싶어서 다시 0단계로 돌아가서 해결하지 못했던 문제들을 하나하나 지워가고 있다.

 

오늘 목터뷰에서 질문 뽑아서 답변 다 정리했고 내일은 계속 말하면서 내용 이해하고 익숙해지는 시간을 좀 가져야겠다. 그리고 모의면접에서 이력서 내용을 바탕으로 한 프로젝트 질문이 많이 나온다고 하니 이 부분도 준비할 예정이다!

댓글