유니크한 배열 문제

soo's·2023년 4월 10일
0

알고리즘 풀기

목록 보기
10/15
post-thumbnail

패션의 선도주자 청길이는 패션의 발전을 위해 패션쇼를 방문해 유니크한 아이템을 조사하기로 하였습니다. 청길이는 입장하는 사람들의 패션에서 처음 보는 아이템 만을 기록합니다. 이때 청길이의 기록에서 아래 규칙에 맞게 배열로 출력해 주세요.

  1. 청길이는 각 옷의 종류를 정수로 기록해 놓습니다.
    ex) 입력은 "1번: 3,1 2번: 4 3번: 2,1,3 4번: 2,1,3,4" 형태의 문자열입니다.
  2. 기록은 청길이가 번호 순서로 유니크한 옷의 번호를 적습니다.
  3. 유니크한 옷은 기록된 순서로 추출되고 출력됩니다.
    ex) 출력은 [3,1,4,2]입니다.
    입출력예시

입력
"1번: 4,2,3 2번: 3 3번: 2,3,4,1 4번: 2,3"

출력
[4, 2, 3, 1]

입력
"1번: 3,1 2번: 4 3번: 2,1,3 4번: 2,1,3,4"

출력
[3, 1, 4, 2]


function solution(s) {
  let arr = s.split(" ").filter((_, idx) => !!(idx % 2));
  arr = arr.join(",").split(",");
  return [...new Set(arr)];
}

solution("1번: 3,1 2번: 4 3번: 2,1,3 4번: 2,1,3,4");

기술매니저님이 주신 문제
일단 입력값 저 문장 전체가 s라는 스트링으로 오는 거라서 어떻게 쟤를 나눠서 받지 고민하다가 split 메서드는 구분자로 나눠서 배열로 반환하니까 저걸 사용함
그 다음 filter 메서드로 val,idx를 받지만 val은 사용 안 할거라 _ 처리 해주고, idx가 홀수인 애들만 값을 가지고 있기 때문에 쟤네가 true인 애들만 arr에 담았다.
현재 arr 상태는

[ '3,1', '4', '2,1,3', '2,1,3,4' ]

이러함. 따라서 다시 join(",")으로 연결해서 string 만들어주고 다시 split(",") ,구분자로 나눠서 배열에 담아준다.
그리고 중복값을 없애기 위해 set 자료에 담아서 결과 값은 배열로 나와야 하기 때문에 스프레드 연산자를 통해 []에 담아 반환한다.

0개의 댓글