if문에서 else의 유무

강지원·2021년 10월 17일
0
post-thumbnail

나는 그 동안 조건이 2개라면 무조건 if else문을 사용해야 하는 줄
알았다. 하지만 이건 나의 크나큰 착각이었다.

(이,,상 허다.. 분명 잘.. 풀었는디,,)

1. 문제

getFind 함수를 작성하세요.

문자와 문자열이 주어졌을때, getFind 함수는 주어진 문자열에서 주어진 문자가 나타나는 첫번째 위치를 반환합니다.

Notes: 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다. 만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다. 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.

중요!! indexOf 함수를 사용하지 마세요.


2. 최종 코드

function getFind(filter, sentence) { 

  // 아래 코드를 작성해주세요.
  for(i = 0; i < sentence.length; i++) {
  if(sentence[i] === filter){
    return i; //
  }
  }
    return -1;
}


const output = getFind('a', 'I am a hacker')
console.log(output) // --> 2

3. 풀이 과정

for문을 활용해 문제를 풀어나갔다.
하지만 한 부분에서 계속 오류가 발생했는데

for(i = 0; i < sentence.length; i++) {
  if(sentence[i] === filter){
    return i; //
  }else if(sentence[i] !== filter) {
  return -1;
  }
}

이 부분이었다.

if문이 아니라면 무조건 else if 나 else를 사용해 다음 리턴값을
뽑아내야 하는 줄 알고있었던 나에겐 당황스러움이 몰려왔다.

시험이 종료되고 나서, 주변 동료들에게 피드백을 구하고 나서야
왜 나의 코드가 작동하지 않았는지 알게되었다.

for문 안에서 if else문을 적용했을 시
sentence[i]와 filter가 같지 않다면 바로 -1을 리턴해버린다.

문장을 끝까지 수색하고 나서 -1을 리턴해야 하는데 말이다.

for문 안에 sentence[i] === filter 라는 조건을 넣고
모든 문장을 수색한 뒤, 결과값이 나오지 않았다면
최종적으로 함수에서 -1을 리턴해주면 문제가 해결되는 거였다.


4. 느낀점

동료에게 피드백 받는 것을 부끄러워 하지도
무서워 하지도 말자는 것이다.

아마 동료들에게 이번 문제에 대해 물어보지 않고
혼자 끙끙대며 문제를 해결하려 했다면
얼마나 시간이 걸렸을 지 모르는 일이다.

안 되는 건 안된다고 말하고, 모르는 건 모른다고 말하고
할 수 있는 건 할 수 있다고 말하자.

profile
'Why' better than 'Yes'

0개의 댓글