TIL #13

devPomme·2021년 1월 10일
0

Algorithm Basic

학습목표

  • 타입 확인과 변환을 능숙하게
  • 이중 반복문 사용
  • 반복문 내에 여러 개의 if문 사용

코드 스타일링

(1) 들여쓰기
코드의 로직이 명확하게 종속적으로 나뉘는 코드를 쓸 때, 종속된 code block은 주인 code block보다 두 칸 들여쓰기 한다.

if (condition) {
  action();
}

(2) 이름짓기
(3) 문자열 표시는 작은 따옴표
(4) if, for, while문의 끝에는 세미콜론을 사용하지 않는다.
(5) 3항 연산자(?)는 간결하고 가독성이 좋은 경우에만 사용

어려웠던 코플릿 문제

문제
문자열을 입력받아 연속되는 문자가 있을 경우, 연속 구간을 반복되는 수와 문자로 조합한 형태로 압축한 문자열을 리턴
입력
string타입의 알파벳 문자열
출력

  • string타입 리턴하기
  • 빈 문자열을 입력받을 경우 빈 문자열 리턴
  • 3개 이상 연속되는 문자만 압축한다. (compressString('wwwpp') = '3wpp')

수도코드 작성하기
결과값이 되는 문자열을 선언한다.let result = '';
첫번째 문자가 3번 이상 반복될 경우 반복된 횟수를 저장하고 그 횟수+반복된 문자를 출력한다.
횟수는 (1로) 초기화되고 반복을 계산할 문자도 바뀐 문자로 업데이트한다.

function compressString(str) {
  let count = 1;
  let result = '';
  let str = str + ' '; //마지막 부분이 연속된 문자일 경우를 위해 dummy문자 추가
  let first = str[0];
  for (let i = 1; i < str.length; i++) {
    if (str[i] === first {
        count ++;
    } else {
      if (count >= 3) {
        result = result + `${count}${first}`
    } else {
      result = result + first.repeat(count);
    }
  count = 1;
  first = str[i];
  }
}
  return result;
}


profile
헌신하고 확장하는 삶

0개의 댓글