728x90
제가 오늘 데일리 루틴으로 작성한 코드입니다.
class Solution {
public long solution(int price, int money, int count) {
long result = 0;
long usedMoney = 0;
for (int i = 1; i <= count; i++) {
usedMoney += (long)price * i;
}
if (money >= usedMoney) {
result = 0;
} else {
result = usedMoney - money;
}
return result;
}
}
새로 선언한 변수가 두개나 있고, if문도 더 간단하게 바꿀 수 있을 것 같습니다. 비교적 최근에 나온 삼항연산자를 사용하면 if문을 줄이고, 이를 이용하여 return하면 변수의 개수도 줄일 수 있을 것 같습니다.
class Solution {
public long solution(int price, int money, int count) {
long usedMoney = 0;
for (int i = 1; i <= count; i++) {
usedMoney += (long)price * i;
}
return money >= usedMoney ? 0 : usedMoney - money;
}
}
변수 result가 사라졌고, if 및 else도 삼항연산자를 통해 훨씬 간단하게 바뀌었습니다. 하지만 for문도 너무 복잡해서 줄이거나 없애고싶습니다.
class Solution {
public long solution(int price, int money, int count) {
long usedMoney = (long)price * count * (count + 1) / 2;
return money >= usedMoney ? 0 : usedMoney - money;
}
}
1부터 n까지의 합은 n * (n + 1) / 2로 표현할 수 있습니다.
훨씬 길던 코드가 단 두 줄로 정리되었습니다. 조건에 따라 다르겠지만 리팩토링을 잘 하는것도 기술인 것 같습니다.
728x90
반응형
LIST
'Sparta > java' 카테고리의 다른 글
IntelliJ 단축키 모음 (0) | 2024.11.12 |
---|---|
java static 좀 더 깊게 알아보기 (0) | 2024.11.12 |
인수(Argument)와 매개변수(Parameter) (0) | 2024.11.07 |
메서드(Method) vs 함수(Function)의 차이 (0) | 2024.11.07 |
TIL(Today I Learned)_java_2차원 배열_24.11.07.Thr (0) | 2024.11.07 |