1-17) 중복단어제거

김예지·2021년 8월 25일
0

문제

N개의 문자열이 입력되면 중복된 문자열은 제거하고 출력하는 프로그램을 작성하세요. 출력하는 문자열은 원래의 입력순서를 유지합니다.
[입력설명]
첫 줄에 자연수 N이 주어진다.(3<=N<=30)
두 번째 줄부터 N개의 문자열이 주어진다. 문자열의 길이는 100을 넘지 않습니다.
[출력설명]
첫 줄부터 중복이 제거된 문자열을 차례로 출력한다.

입력예제 1

5
good
time
good
time
student

출력예제 1

good
time
student


문제 풀이

예습 이론

코드

filter()메소드를 사용해서 문제를 풀 수 있다. 중복되는것은 필터링해서, 중복되지 않는 것들만 모아서 새로운 배열을 생성한다.

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){  
                let answer; 
                //console.log(s.indexOf("time")); //'time'이 처음으로 발견되는 인덱스 (1)
                
                //filter은 조건을 만족하는 배열의 요소(true)만 필터링해서, 새로운 배열을 만듦
                answer=s.filter(function(v, i){
                    //console.log(v, i);
                    return s.indexOf(v)===i; //s.indexOf(v)===i가 참일때만 필터링(권장)
                    //if(s.indexOf(v)===i) return true; //위와 같음(위 코드 해석)
                }); 
                return answer;
            }
            let str=["good", "time", "good", "time", "student"];
            console.log(solution(str));
        </script>
    </body>
</html>

결과

good
time
student

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

2개의 댓글

comment-user-thumbnail
2021년 9월 11일

9/10

답글 달기
comment-user-thumbnail
2022년 11월 24일

11/24

Set 객체 활용

function solution(arr) {
  return Array.from(new Set(arr));
}

solution(["good", "time", "good", "time", "student"]);
답글 달기