반복문에 대한 이해도가 좀 떨어진다고 느꼈었는데, 알고리즘 문제 풀면서 확실히 놓친 부분이 있다는 걸 알았다. 아래 오답노트로 정리하려고 함.
문자열을 입력받아 문자열 내에 아래 중 하나가 존재하는지 여부를 리턴해야 합니다.(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를 리턴한다.
}