문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120820
문제
--
--
풀이
--
class Solution {
public int solution(int age) {
int now = 2022;
return now + 1 - age;
}
}
--
다른 풀이
--
class Solution {
public int solution(int age) {
return 2022 - age + 1;
}
}
--
비교 및 회고
--
변수를 생성할 때마다 비용이 든다.
다만 변수 같은 경우는 매우 미미하게 비용이 들어서 큰 상관은 없지만
그나마 효율을 따지면
변수를 생성하지 않고 바로 계산 후 반환하는 게 좋다고 생각했다.
원래는
return 2023 - age;
로 하드 코딩을 했다.
하지만 알고리즘을 풀 때
이러한 경우 조금이라도 속도를 높일 수 있는 방법을 사용해야 할까?
아니면 유지보수성 좋게 작성해야 할까에 대해 고민이 생겼다.
알고리즘을 푸는 목적은
어떠한 문제에 대해 효율적으로 푸는 것 (문제 해결 능력)이라고 알고 있다.
여기서 말하는 효율적이라는 것을 생각해보면 너무 복합적이다.
- 주어진 자원을 최적으로 사용
- 시간 복잡도
- 공간 복잡도
- 단순성, 가독성
- 유지보수성
등이 생각난다.
여러 생각들을 하니
속도만 생각해서 푸는 것 보다
주어진 자원들을 넘어가지 않는 선에서 (적게 사용할수록 좋음)
가독성, 유지보수성 등 다양한 효율적인 측면들을 고려하여 작성하는 게 좋다고 생각이 든다.
지금은 그냥 알고리즘만 생각해서 풀지만
나중을 위해 프로젝트를 하는 도중 해당 알고리즘이 필요하여 작성한다는 생각으로 해야 도움이 될 것 같다고 판단했다.
--
'Record > 알고리즘 풀이' 카테고리의 다른 글
[ Lv.0 / 산술 ] 배열의 평균값 (+ Stream API) (0) | 2024.08.24 |
---|---|
[ Lv.0 / 비교 ] 숫자 비교하기 (+ if문, 삼항 연산자 ) (0) | 2024.08.23 |