2021/12/21) 17. 중복단어제거

굥굥이·2021년 12월 21일
0
post-thumbnail

1. 문제

<중복단어제거>
: N개의 문자열이 입력되면 중복된 문자열을 제거하고 출력하는 프로그램을 작성한다. 출력하는 문자열은 원래의 입력순서를 유지한다.

2. 해결 방법

  1. filter는 고차함순데, 첫 번째 파라미터론 value 그리고 두 번째 파라미터로는 index를 받는다. 그러므로 indexOf를 이용하여 true인 것들로만 새로운 배열을 만든다.

! 플러스 개념
-> 인수 vs 인자 / 고차함수 vs 콜백함수 / filter

  • 인수(외부에서 넣어주는 값)인자(=매개변수, 함수 내부로 가져오는 값)의 차이는 관점차이다! 함수의 인자는 함수가 호출될 때 선언되고(undefined로 초기화), 이어서 인수가 재할당된다.
  • 고차함수는 매개변수를 통해 함수의 외부에서 콜백함수를 전달받은 함수이고,
    콜백함수는 매개변수를 통해 다른 함수의 내부로 전달되는 함수이다.
    => 정리하면 매개변수를 통해 외부함수를 전달받는 함수를 고차함수라고 하고, 고차함수의 매개변수로 전달되는 함수를 콜백함수라고 한다.
    고차함수로는 forEaach, map, filter, reduce 등이 있다.
  • filter : 특정 조건이 true인 것들로만 추출하여 새로운 배열을 만들어 반환한다.

3. 정답

        <script>
            function solution(s){  
                let answer;
                //console.log(s.indexOf("time"));
                answer=s.filter(function(v, i){
                    return s.indexOf(v)===i; //if(s.indexOf(v) === i ) return true; 랑 같음. 둘 다 어차피 true 혹은 false이므로.
                });
                return answer;
            }
            let str=["good", "time", "good", "time", "student"]; 
            console.log(solution(str));
        </script>

4. 내 코드와 비교 그리고 반성

초심찾아 초심.. 흑흑.. 1일 1알고리즘을 맹세해놓고, 지금..
아침공부를 맹세한 이후로 더 망했다. 밤에는 일찍 일어나야 한다는 핑계로 자고, 아침엔 5시에 깼다가 너무 피곤하다는 핑계로 다시 자고.. 그래서 공부를 아예 안하는 현상이..
난 아침형인간이 아닌데 나 자신을 너무 과대평가했군.
그리고 코드를 배열이 아닌 문자열이 반환되도록 했다. 앞에서 배운 내용 그대로 코드를 짰다. 생각좀 하자.

profile
아자아자 파이띵굥!

0개의 댓글