본문 바로가기

자료구조알고리즘/코드스테이츠 Coplit

09_ABCheck

[ 문제 ]

입력받은 문자열에서 'axxxb'이거나, 'bxxxa'가 포함되어있으면 true, 아니면 false를 반환하는 문제이다.

이번 문제는 주의사항을 잘 봐야하는데, 대소문자를 구분하지 않고 / 공백도 한 글자로 취급 / 'a','b'는 중복해서 등장 할 수 있다.

입출력 예시를 보면 입력받은 문자열이 'lane Borrowed'이다. 'ane B' 이렇게 a로 시작하여 b로 끝나는 길이 5인 문자열이 포함되었기 때문에 true를 반환한다.

 

[ 풀이 ]

나의 로직은 다음과 같다.

1/ toLowerCase함수를 이용하여 입력받은 문자열을 전부 소문자로 만들어 준다.

2/ 반복문과 조건문을 이용하여 true/false를 결정한다.

function ABCheck(str) {
  let lowerLetter = str.toLowerCase(); //소문자로 만들어준다.참고로, str은 변경되지 않는다.
  for(let i = 0; i < lowerLetter.length; i++){ //반복문을 이용하여 lowerLetter 문자열을 전부 반복한다.
    if(lowerLetter[i] === 'a' && lowerLetter[i+4] === 'b'){ //'a'가 나오면 [a인덱스+4]가 'b'가 나오는지 확인.
      return true; //a___b이면 true값을 반환
    } else if(lowerLetter[i] === 'b' && lowerLetter[i+4] === 'a'){
      return true; //반대로 'b'가 나오고 [index+4]가 'a'면 true값 반환
    }
  }
  return false; //두 경우가 다 아니면 false 반환
}

 

 

위의 if조건문을 아래와 같이 한꺼번에 적어도 좋을 듯 하다.

if((lowerLetter[i] === 'a' && lowerLetter[i+4] === 'b') || (lowerLetter[i] === 'b' && lowerLetter[i+4] === 'a') ){
      return true;
    }

 

 

 

[ 레퍼런스 ]

레퍼런스는 입력받은 str이 undefined일 경우를 먼저 적어 주고,

반복문을 돌리는 형식이다.

1/ 음..인자로 string타입의 알파벳 문자열이 들어와야하는데 undefined가 들어오는 경우는 뭐지?

질문해봐야겠다.

 

2/ str에 toLowerCase함수를 사용하여 '재할당'을 해도 되는구나..! 난 맨날 새로운 변수에 선언해서 할당해줬었는데.

 

3/ for문을 인덱스 4부터 시작하여 str.length-1까지 도는게 더 정확한 것 같다.

 

역시 레퍼런스를 보는건 공부가 많이 된다!

'자료구조알고리즘 > 코드스테이츠 Coplit' 카테고리의 다른 글

11_removeExtremes  (0) 2022.02.18
10_insertDash  (0) 2022.02.18
08_convertDoubleSpaceToSingle  (0) 2022.02.15
07_convertListToObject  (0) 2022.02.12
06_letterCapitalize  (0) 2022.02.09