1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/82612
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 나의 풀이
function solution(price, money, count) {
for (let i = 0; i < count+1; i++) {
money -= price * i
}
return money >= 0 ? 0 : Math.abs(money);
}
3. 다른 사람 풀이
프로그래머스의 다른 사람의 풀이를 분석함
case 1) 가우스 공식
??
가우스가 뭔데
function solution(price, money, count) {
const tmp = price * count * (count + 1) / 2 - money;
return tmp > 0 ? tmp : 0;
}
case 2) 위 가우스 공식에서 Math.max로 더 큰 수를 반환
즉, 돈이 부족하지 않은 경우에는 0이 나오도록 한 것
const solution = (price, money, count) => Math.max (price*count*(count+1)/2-money, 0)
4. 배운 점
가우스 공식 배울 예정
메모)
삼각형 면적 구한다고 생각하면 쉬워요. 밑변 x 높이 / 2 하는 거죠. price * count가 밑변, count가 높이인 직각 삼각형인 거죠. 그런데 쌓여진 블록들은 정사각형이니 대각선이 지나가면서 네모난 블록을 정확히 반을 자르게 돼요. 그 반만큼 잘려진 걸 모아보면 한 줄의 반인 거죠. 그래서 그걸 보상 받기 위해 한 줄을 더 높게 해주고 반으로 나누죠. 밑변 * (높이 + 1) / 2
'알고리즘, CS' 카테고리의 다른 글
[특강] 클린코드_조건과 탈출 (0) | 2023.08.04 |
---|---|
[프로그래머스 Lv. 0] 캐릭터의 좌표 (0) | 2023.08.04 |
[프로그래머스 Lv. 1] 문자열 내림차순으로 배치하기 (0) | 2023.08.04 |
[프로그래머스 Lv. 1] 가운데 글자 가져오기 (0) | 2023.08.01 |
[특강] 클린코드_의미 있는 변수명 짓기 (0) | 2023.08.01 |