프로그래머스 - A로 B 만들기

이한결·2022년 12월 11일
0

프로그래머스

목록 보기
64/107
post-thumbnail

문제 설명

문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.

제한사항

● 0 < before의 길이 == after의 길이 < 1,000
● before와 after는 모두 소문자로 이루어져 있습니다.

입출력 예

입출력 예 설명

입출력 예 #1

"olleh"의 순서를 바꾸면 "hello"를 만들 수 있습니다.

입출력 예 #2

"allpe"의 순서를 바꿔도 "apple"을 만들 수 없습니다.

나의 코드

function solution(before, after) {
  let letterb = [...before];
  let lettera = [...after];

  const equalsIgnoreOrder = (a, b) => {
    if (a.length !== b.length) return false;
    const uniqueValues = new Set([...a, ...b]);
    for (const v of uniqueValues) {
      const aCount = a.filter((e) => e === v).length;
      const bCount = b.filter((e) => e === v).length;
      if (aCount !== bCount) return false;
    }
    return true;
  };

  if (equalsIgnoreOrder(letterb, lettera)) {
    return 1;
  } else {
    return 0;
  }
}
  1. 문자의 길이가 다르면 false를 반환한다.
  2. 문자의 길이가 같다면 set으로 같은 문자를 제거하여 uniqueValues 배열에 담는다.
  3. for of문으로 uniqueValues 배열의 값과 letterb, lettera의 값을 비교한다.
  4. 길이가 다르면 false, 같은 true를 반환한다.

끝!

profile
평범한 삶을 위하여

0개의 댓글