내가 생각하기에 조건문은 쉬워 보이면서도 어찌 보면 정말 어려운 영역이라고 생각한다. 오늘은 페어님과 함께 JS 코드를 작성하는 시간을 가지면서 조건문을 작성하는 문제에 맞딱드렸다.
문제에 힌트로 제시가 되어 있는 수도코드를 보니 간단하게 if, else 문으로 작성을 할 수 있을 것 같았다.
그래서 별 생각 없이 수도 코드에 작성되어 있는 조건 분기문 그대로, 작성하고 코드를 실행시켜 보았다.
어? 그런데 웬걸.
나는 두번째 값만 입력을 하고 싶었는데,
첫번째 클릭을 하자마자 첫번째 값과 두번째 값 모두가 입력되어 버리고 말았다.
나와 페어분이 같이 작성한 코드는 아래와 같았다.
if(-가 아니면){
--을 수행한다
}else{
--을 수행한다
}
왜 안되는지 알고 싶었지만 당장 오늘까지 1차 제출이어서 의문 해결은 저녁 시간에 하기로 했다.
우선, 한번의 클릭으로 왜 두 개의 값이 다 나오는지를 이해하기로 했다.
첫 클릭을 했을 때, 첫번째 부분에 0이 아닌 숫자가 입력될 경우, if문도 만족을 동시에 했기 때문에, 두번째 값도 입력이 같게 되어버렸던 것이다.
그래서 나는 여기에 좀 더 집중해서 생각을 해 보았다.
그렇다면 두 번째 값을 첫번째 값과 다른 값이 입력될 수 있도록 해야 했다.
그래서 처음 값은 다른 변수를 선언하고 그곳에 할당하려고 했으나, 여전히 두 값 모두 같게 입력이 되어 버렸다. 문제가 점점 꼬이는 느낌이었다. 수도 코드는 정말 간단한데 이렇게나 어려운 문제인가 싶었다.
그래서 조건문의 조건 부분을 바꿔 보기로 했다.
if(-이면){
--을 수행한다
}else{
--을 수행한다
}
그랬더니 해결이 되었다! 안 되는 방법에서 자꾸 파고들어 시간을 허비할 것 같을 땐, 조건 자체를 아얘 뒤집어서 생각을 해 보는 것도 방법이 될 수 있을 것 같다.
조건문에선, 조건을 작성하는 것이 정말, 아주 중요한 것 같다.
(집합의 벤 다이어그램을 활용하는 것도 좋고, 실제 값을 대입해 보는 것도 하나의 방법이라고 생각한다)