본문 바로가기
JAVA/Programmers

JAVA 프로그래머스 [옷가게 할인 받기] 자바 Lv.0

by tripleup 2023. 5. 26.
728x90
반응형

[프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 옷가게 할인 받기

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;
    }
}

 


728x90
반응형

댓글