JAVA 프로그래머스 [옷가게 할인 받기] 자바 Lv.0
[프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 옷가게 할인 받기
https://school.programmers.co.kr/learn/courses/30/lessons/120818
해결 과정
if문은 위에서 부터 순차적으로 진행되기 때문에 제일 큰 값부터 진행해준다
단순히 그 조건에 해당하면 기존 price값에 할인율을 적용한 값이 나오도록 곱해진 것을 다시 넣어주고 마지막에 return 해주면 된다.
하지만 아래 두 코드를 보자. 처음에 자꾸 런타임 에러가 발생했다. 다른 사람의 코드를 참고해보니 통과가 나왔다.
여기서 두개의 차이는 *=로 표현하고 안하고 차이인데 왜 결과는 이럴까?
다음 포스트들에서 해답을 찾았다 오호,,
https://cinnamonc.tistory.com/m/208
[공부 쉬어가기] Java: 왜 복합 대입 연산자는 형변환 에러가 발생하지 않을까
Java에서 복합 대입 연산자(+=, -=, *= 등)를 공부하다가 아래와 같은 경우에는 에러가 발생하지 않는다는 사실을 알게 되었다. 상황 설명을 조금 하자면.. num이라는 변수는 데이터 타입이 short형이
cinnamonc.tistory.com
또한 복합대입연산자가 처리속도가 더 빠르다고 한다.
https://donghyun0826.tistory.com/12
JAVA(7-3) 연산자(복합대입연산자)
▶ 복합대입연산자 산술연산자와 대입연산자를 함께 사용하는 연산자 연산처리속도가 빨라지므로 사용하는 걸 권장한다. 1. += a = a + 3; => a += 3; 2. -= a = a - 3; => a -= 3; 3. *= a = a * 3; => a *= 3; 4. /= a =
donghyun0826.tistory.com
소스 코드
class Solution {
public int solution(int price) {
if(price >= 500000) {
price =* 0.8;
} else if(price =* 300000) {
price *= 0.9;
} else if(price =* 100000) {
price *= 0.95;
}
return price;
}
}
class Solution {
public int solution(int price) {
double answer = 0;
if (price >= 500000) {
answer = price*0.8;
}else if (price >= 300000) {
answer = price*0.9;
}else if (price >= 100000) {
answer = price*0.95;
}else return price;
return (int)answer;
}
}