오늘은 기분이 별로 좋지 않다. 이유는 크게 두가지인데, 하나는 나의 고질병인 어렵게 생각하는 병, 또 하나는 의사코드를 작성하지 않는 습관 때문이였다. 자세한 상황은 아래에서 후술하겠다.
이번주부터 JS가 시작되었다. 기초를 배우지 않고 만졌던 JS였기 때문에 나름 긴장하며 첫 학습자료를 펼쳤지만 약 5% 정도를 제외하고는 다행히 알고 있던 내용들이였다. 새삼 프로젝트를 하길 잘했다는 생각이 들었다.
그래도 모르는 건 존재했고, 따로 정리하고 검색해서 공부를 하는 시간을 잠깐 가졌다. 문제는 페어프로그래밍으로 진행한 문제풀이였다.
여기에서 나의 큰 병이 터졌다. 바로 "문제를 어렵게 풀이하는 습관" 이다. 특히 문제 7번에서 이 병이 가장 크게 터졌는데, 세 인자를 받아서 직각삼각형인지를 boolean으로 나타내는 것이다.
처음 문제를 봤을 땐 답이 보이지 않았다. if문을 이용하면 너무나 쉽게 풀이할 수 있는 문제였지만 if문을 배우지 않았다는 가정하에 문제를 접근했다.
그런데 if문을 이용하지 않고 풀이하는 방법이 전혀 떠오르지 않았고, 시간이 부족해서 결국 if문으로 코드를 작성하고 페어님에게 죄송하다는 말씀을 드렸다.
하지만 출제자의 의도는 or 덕지덕지 return 이였다.
피타고라스를 이용하여 풀이를 해야하기 때문에 모든 값을 제곱으로 바꾸고 a = b + c || b = ~~ 이런식으로 세번의 식을 or로 묶는 방법이였다... 너무 허무했다 ㅠㅠ
let a = 1;
let b = 2;
let c = 3;
let pow1 = Math.pow(a, 2);
let pow2 = b ** 2;
let pow3 = c * c;
-----------------------------
//내가 사용한 방식
let temp = pow1;
pow1 = Math.max(pow1, pow2, pow3);
if(pow1 === pow2) {
pow2 = temp;
} else if(pow1 === pow3) {
pow3 = temp;
}
return pow1 === pow2 + pow3;
-----------------------------
//실제 출제자의 의도
return pow1 === pow2 + pow3 || pow2 === pow1 + pow3 || pow3 === pow1 + pow2;
그리고 또 하나의 문제점은 나는 의사코드로 코딩을 해 본 적이 없다는 것이다.
항상 코드 만들기 전에 생각만 하고 일단 적기 시작하면서 테스트 해보고 맞으면 그대로 하고 아니면 고치고를 반복했는데, 의사코드를 작성하면 시작부터 끝까지 내가 알 수 있게 한글로 코드의 진행 순서를 작성하고 그걸 그대로 코드로 변경시키기만 하면 된다. 앞으로는 의사코드를 반드시 작성하도록 할 것이다.