본문 바로가기
Research/problems

프로그래머스_lv0_한 번만 등장한 문자

by RIEM 2022. 11. 16.
728x90

1.한 번만 등장한 문자

문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.

 

제한사항

0 < s의 길이 < 1,000

s는 소문자로만 이루어져 있습니다.

 

 

풀이

s 매개변수

s에서 한번만 등장하는 문자들을 찾고 -> 사전 순으로 정렬한 -> 문자열을 리턴할 것.

여기서 풀어야할 문제는 1)중복되는 문자들을 제거하고 2) 사전 순으로 정렬을 하는 것이다.

 split 메소드를 활용하면 특정 기준으로 스트링을 쪼갤 수 있는데, 이때 중복되는 것들이 2개 이상 있으면 3개 이상의 요소로 쪼개지고, 만약 1개만 존재하는 캐릭터를 기준으로 쪼개면 어레이의 요소들이 2개밖에 남지 않는다는 원리를 이용하면 되겠다.

 

나의 답

 

function solution(s) {
  var answer = [];
  const uniqueChar = [...new Set(s.split(''))];
  uniqueChar.forEach((chr) => {
    if(s.split(chr).length === 2) {
      answer.push(chr)
    }
})
  return answer.sort().join('');
}

 

다른 사람 답

 

function solution(s) {
    let res = [];
    for (let c of s) if (s.indexOf(c) === s.lastIndexOf(c)) res.push(c);
    return res.sort().join('');
}

 

다른 사람의 경우, 반복문을 활용해 첫 번째로 찾는 아이템의 인덱스와 마지막 인덱스를 비교해서 같을 경우, 빈 어레이로 푸쉬하는 방법을 활용했다. 결국 하나의 아이템만 존재한다면 첫번째 인덱스와 마지막 인덱스가 같다는 점을 이용한 방법이다.

 

메소드에 의존하는 방식이여서 선호하지 않지만 이 메소드는 알아두면 유용하다고 생각한다.

 

lastIndexOf

 

const paragraph = 'The quick brown fox jumps over the lazy dog. If the dog barked, was it really lazy?';

const searchTerm = 'dog';

console.log(`The index of the first "${searchTerm}" from the end is ${paragraph.lastIndexOf(searchTerm)}`);
// expected output: "The index of the first "dog" from the end is 52"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf

 

728x90

댓글