20 09 12 (토) TIL

feelslikemmmm·2020년 9월 12일
0

TIL

목록 보기
6/36
post-thumbnail

⚡️ 오늘 한 일

  • 알고리즘Better code 에 대한 이해


► 알고리즘 (문제를 어떻게 풀어나갈까?)

1. 문자열 바꾸기 문제로 보는 알고리즘


예를 들어 텍스트에서 foo라는 단어를 찾아 전부 다른 단어로 바꿔주는 코드를 작성한다고 가정해보자.
아래는 예제이다.

step1. 텍스트를 입력받는다
step2. foo라는 단어를 찾는다
step3. 그 자리에 새로운 단어를 넣는다
step4. 바뀐 내용을 리턴한다.

이제 이 pseudocode를 실제로 작성가능한 JavaScript로 바꾸고자 한다면, 
기본적으로 반복문, 조건문에 대한 이해를 해야하고, 
그 다음엔 JavaScript가 할수 있는 것과 할수 없는 것들에 대한 이해가 있어야 한다. 
(이 예제의 경우, String은 Immutable하다는 특징, 즉 내용을 직접 바꿀 수 없다는 특징을 알고 있어야 한다.) 
이제 알고리즘을 작성할 준비가 되었다. 위의 예제에서 구체화할 수 있는 부분을 구체화해보자

step1.텍스트를 입력으로 받는다
step2. foo라는 단어를 찾는다
step3. 끝까지 일치하는지 확인해 본 후,
step4. foo라는 글자의 index가 -1이 아니면 단어를 찾은 것이다
step5. while index를 발견했다면
step6. index를 이용해 foo 바로 앞까지의 텍스트를 얻어내고
step7. foo 대신 새로운 단어를 넣는다
step8. endwhile
step9. 바뀐 내용을 리턴한다.

이제 이것을 코드로 옮겨보자

<script>
  function replaceFoo(text) {
    // foo라는 글자의 index가 -1 이 아니면 단어를 찾은 것이다.
    while( text.indexOf('foo') !== -1) {
    // index를 발견하면
    let index = text.indexOf('foo');
    // index를 이용해 foo 바로 앞까지의 텍스트를 얻어내고
    let beforeText = text.slice(0,index);
    // foo 대신 새로운 단어를 넣는다
    let replaceText = 'BAR';
    // foo 이후의 텍스트를 넣는다
    let afterText = text.slice(index + 3);
    //'foo'는 세 글자이므로 3을 더함
    text - beforeText + replaceText + afterText;
   }
   return text; // 바뀐 내용을 리턴한다
 }
  
</script>

  • 알고리즘 관련 문제 풀기

profile
꾸준함을 잃지 말자는 모토를 가지고 개발하고 있습니다 :)

0개의 댓글