알고리즘 문제의 풀이 과정 중 너무 난잡한 풀이방법을 이용해서 풀었던 4번 문제...
두 정수 사이의 합을 구하는 알고리즘을 완성하는 문제다.
function solution(a, b) {
var answer = 0;
for (let i = a; i <= b; i++) {
if (a !== b) {
answer += i;
} else {
answer = i;
}; // a 부터 b 까지의 모든 수를 더함
};
for (let j = b; j <= a; j++) {
if (b !== a) {
answer += j;
} else {
answer = j;
}; // b 부터 a 까지의 모든 수를 더함
}; // a와 b가 같을 경우 a나 b값 하나만 출력
return answer;
};
처음 이런 식으로 코드를 짜니 실행에 성공했다.
하지만 다시 한 번 코드를 들여다 보니 내가 하드 코딩을 했다는 것을 알 수 있었다.
여기서 생각을 반대로 전환해보면 코드량을 조금 더 줄일 수 있다는 것을 깨달았다.
function solution(a, b) {
var answer = 0;
if ((b - a) >= 0) { // a가 b보다 크거나 같을 경우,
for (let i = 0; i <= (b - a); i++) {
answer += (a + i);
}; // a에 i(1씩 커지는 수)를 a와 b의 차이 값까지 차례로 더한 값을 전부 더하는 것을 반복
} else { // a가 b보다 작을 경우,
for (let j = 0; j <= (a - b); j++) {
answer += (a - j);
}; // a에 i(1씩 커지는 수)를 a와 b의 차이 값까지 차례로 뺀 값을 전부 더하는 것을 반복
};
return answer;
};
이 전에는 for문 내에 if문을 넣었더니 for문과 if문을 두 번씩 반복하게 되는 코드가 짜여졌는데
반대로 if문 내에 for문을 넣었더니 if문은 반복할 필요가 없어진 것이다.
정말 여러모로 생각의 전환이 중요하단 것을 뼈저리 느끼는 날이었다.
'개발일지 TIL(Today I Learned)' 카테고리의 다른 글
[2023.06.27] 개발일지 (0) | 2023.06.28 |
---|---|
[2023.06.26] 개발일지 (0) | 2023.06.28 |
[2023.06.23] 개발일지 (0) | 2023.06.28 |
[2023.06.22] 개발일지 (0) | 2023.06.28 |
[2023.06.20] 개발일지 (0) | 2023.06.20 |