TIL-24_2020.01.30

Jiwoo Joy Kim (zuzokim)·2021년 1월 30일
1

TIL

목록 보기
24/30
post-thumbnail

TIL

반복문에 대한 이해도가 좀 떨어진다고 느꼈었는데, 알고리즘 문제 풀면서 확실히 놓친 부분이 있다는 걸 알았다. 아래 오답노트로 정리하려고 함.

알고리즘 9

문자열을 입력받아 문자열 내에 아래 중 하나가 존재하는지 여부를 리턴해야 합니다.(boolean 타입 리턴)
'a'로 시작해서 'b'로 끝나는 길이 5의 문자열
'b'로 시작해서 'a'로 끝나는 길이 5의 문자열

조건: 대소문자를 구분하지 않습니다.
조건: 공백도 한 글자로 취급합니다.
조건: 'a'와 'b'는 중복해서 등장할 수 있습니다.

  • 아래는 처음 내가 작성한 코드
function ABCheck(str) {
  if(str === ''){
    return false;
  }

  str = str.toLowerCase();

  for(let i = 0; i < str.length; i++){
    if((str[i] === 'a' && str[i + 4] === 'b') || 
       (str[i] === 'b' && str[i + 4] === 'a')){
       return true;
    }else{
      return false;// for문 내부에 있음.  
   //for문이 순차적으로 돌면서 if문의 조건에 맞지 않으면,(그다음 i번째를 검사하지 않고), 바로 else로 넘어가 false를 리턴해버리고 끝이 나버리므로,  
      //'lane borrowed'을 입력받았을 때 i = 0 일때를 검사하고 false를 리턴해버리고 만다.
    }
  }
}
  • 아래는 제대로 통과되는 코드
function ABCheck(str) {
  if(str === ''){
    return false;
  }

  str = str.toLowerCase();

  for(let i = 0; i < str.length; i++){
    if((str[i] === 'a' && str[i + 4] === 'b') || 
       (str[i] === 'b' && str[i + 4] === 'a')){
       return true;
    }
  }
  return false;//for문 바깥에 있음.
  //반면, for문을 다 돌면서 검사를 한 후에 if문의 조건에 해당하는 경우가 없다면, 
  //최종적으로 false를 리턴한다.
}
profile
- I make something! ✍🏽👩🏻‍💻🎬🎨💖🪑🔨🔜

0개의 댓글