알고리즘🅰/프로그래머스

[프로그래머스] 부족한 금액 계산하기

개발조각 2022. 2. 15. 12:35
728x90
반응형

2021.11.11에 푼 문제입니다.

 

이번 문제는 이벤트성 문제 같고 쉬운 편에 속해서 5~10분 컷으로 푼 것 같습니다.

이 문제는 "놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지"를 구하는 문제예요.

이 문제에서는 가장 중요한 문장은 "단, 금액이 부족하지 않으면 0을 return 하세요." 이 문장이에요.
이 문장의 내용을 어길 경우 테스트 제출 후 채점하기에서 테스트 4번에 틀리게 돼요.
이 문장에 대한 해결방안에서 설명하겠습니다.


해결방안

function solution(price, money, count) {
    var answer = 0;
    
    // 필요한 놀이기구의 이용 금액
    for(let i=1; i <= count; i++) answer += i * price;
    // 부족한 금액 구하기
    return answer < money ? 0 : answer - money;
}

해결방안 순서

  1. 필요한 놀이기구의 이용 금액
  2. 부족한 금액 구하기

 

1단계. 필요한 놀이기구의 이용 금액

필요한 놀이기구의 이용 금액을 구하기 위해 for문을 사용해 주었습니다.

 

입출력 예 설명을 읽어보면

테스트 1로 설명(price = 3; money = 20; count =4; result = 10)

count가 4번이고 price가 3 임으로 3+6+9+12=30 이 과정까지를 코드로 나타내야 됩니다.

// 1단계. 필요한 놀이기구의 이용 금액
for(let i=1; i <= count; i++) answer += i * price;

이 코드가 위에서 코드로 나타내야 되는 부분입니다.

  • for(let i=1; i <= count; i++) : 테스트 1일 경우 1, 2, 3, 4 까지 반복
  • answer += i * price; : 테스트1일 경우 answer이 3, 9, 18, 30으로 됨 자세한 설명은 아래에서👇

테스트 1일 경우

i=1일때

answer += i * price; -> 0 += 1*3 -> answer = 3

 

i=2일때

answer += i * price; -> 3 += 2*3 -> answer = 3 + 6 = 9

 

i=3일때

answer += i * price; -> 9 += 3*3 -> answer = 9 + 9 = 18

 

i=4일때

answer += i * price; -> 18 += 4*3 -> answer = 18 + 12 = 30

 

for문에서는 {}안의 문장이 한 줄이라면 {}이 생략이 가능해서 

for(let i=1; i <= count; i++) answer += i * price

이렇게 써주었습니다.

테스트 1
(price = 3; money = 20; count =4; result = 10)
i=1일때
answer += i * price; -> 0 += 1*3 -> answer = 3

i=2일때
answer += i * price; -> 3 += 2*3 -> answer = 3 + 6 = 9

i=3일때
answer += i * price; -> 9 += 3*3 -> answer = 9 + 9 = 18

i=4일때
answer += i * price; -> 18 += 4*3 -> answer = 18 + 12 = 30

 

 

2단계. 부족한 금액 구하기

이제 "현재 자신이 가지고 있는 금액에서 얼마가 모자라는지"를 구해야 되는데요.

그전에 앞에서 "단, 금액이 부족하지 않으면 0을 return 하세요." 문장이 중요하다고 했습니다.

  1. 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지
  2. 단, 금액이 부족하지 않으면 0을 return

이 두문장 가지고 조건문으로 코드를 짰습니다.

// 2단계. 부족한 금액 구하기
return answer < money ? 0 : answer - money;

이 코드가 위에 두문장을 가지고 조건문으로 쓴 코드입니다.

여기서 삼항 연산자 사용했는데요.

삼항 연산자는 간단한 조건문 쓸 때 참 좋은 것 같아요.
(물론 else if를 안 써도 될 경우는 if문이 좋아요!!)

 

삼항 연산자

구문 : 조건 ? true : false

  • 조건이 true이면 true를 실행
  • 조건이 false이면 false를 실행

위 코드에서는 

answer < money ? 2번문장 : 1번문장;

이렇게 구하였습니다.

 

테스트 1
(price = 3; money = 20; count =4; result = 10)

1단계에서 answer = 30;
return answer < money ? 0 : answer - money;
answer < money -> 30<20 -> false
answer - money -> 30-20 = 10

 


여기까지 프로그래머스 부족한 금액 계산하기 해결방안에 대해 설명해보았습니다.

728x90
반응형