뮤탈블러드초보만

야 나 개 ·2021년 11월 1일
0

주간 문제아이돌 

목록 보기
5/17

9번문제

문자열을 입력받아 문자열 내에 아래 중 하나가 존재하는지 여부를 리턴해야 합니다.

  1. 'a'로 시작해서 'b'로 끝나는 길이 5의 문자열
  2. 'b'로 시작해서 'a'로 끝나는 길이 5의 문자열

입출력 예시

let output = ABCheck('lane Borrowed');
console.log(output); // --> true

이번 문제는 그렇게 까다롭진 않아
반복문을 잘 생각하면 잘 풀림

시작 위치을 잘 설정하면됨

첫번째 풀이

function ABCheck(str) {
  let newStr = str.toUpperCase();
  
  for(let i = 0; i < newStr.length; i++){
    if(newStr[i] === 'A' && newStr[i+4] === 'B'){
        return true;
    }
    if(newStr[i] === 'B' && newStr[i+4] === 'A'){
      return true;
    }
  }
  return false;
}

사실 이렇게 해도 잘 풀려 근데

문자열을 벗어나게 되면 undefined으로 에러 날 수도 있어

두번째 문제풀이

시작점을 처음부터 5번째 인덱스부터 시작하는거지
이해함?

function ABCheck(str) {
  
  if (str.length < 5){
    return false
  }

  let newStr = str.toUpperCase();

  for(let i = 4; i < newStr.length; i++){
    if(newStr[i-4] === 'A' && newStr[i] === 'B'){
      return true;
    }
    if(newStr[i-4] === 'B' && newStr[i] === 'A'){
      return true;
    }
  }
  return false;
}

그럼 다음문제로 이동

10번문제

문자열을 입력받아 연속된 한자리 홀수 숫자 사이에 '-'를 추가한 문자열을 리턴해야 합니다.

예시

let output = insertDash('454793');
console.log(output); // --> 4547-9-3
function insertDash(str) {
  // TODO: 여기에 코드를 작성합니다.
  // 반복해서 인덱스별로 홀수를 찾는다. 
  // 연속해서 홀수 인 경우만 - 를 추가한다. 

  // 첫번째 풀이 
  if(str.length === 1){
    return str;
  }

  let result = '';
  for(let i = 0; i < str.length; i++){
    if(str[i] % 2 !== 0 && str[i+1] % 2 !== 0){
      result = result + str[i] + '-' 
    }else{
      result = result + str[i]
    }
  }return result.slice(0,result.length-1);

  
}

두번째 풀이
사실 큰 차이는 없고....
넘버 타입으로 확실히 바꿔서 에러를 방지하고,
사실 나머지가 0이면 투루로 됨 ~~ 이거 팁

  let result = '';

  for(let i = 0; i < str.length; i++){
    if(Number(str[i])%2 && Number(str[i+1])%2){
      result = result + str[i] + '-'
    }
    else{
      result = result + str[i]
    }
  } return result;

}
profile
야 나도 개발자 될 수 있어

0개의 댓글