개발후라이
개발후라이
개발후라이
  • 분류 전체보기 (287)
    • Web Front End (76)
      • Javascript & Typescript (26)
      • React (12)
      • Vue (4)
      • Nodejs (1)
      • HTML (6)
      • CSS (8)
      • HTTP (6)
      • 책 - Review (8)
    • TIL (0)
    • Problem Solved (135)
      • 알고리즘 (4)
      • BOJ (67)
      • Programmers (8)
      • HackerRank (33)
      • LeetCode (23)
    • 회고 (4)
      • 오늘의 회고 (16)
      • 주간 회고 (15)
      • 월간 회고 (7)
      • WakaTime (9)
    • Git (3)
    • 기타 (15)
      • 취업 (5)
      • 자격증 (1)

블로그 메뉴

  • GitHub
  • LinkedIn
  • 홈

인기 글

태그

  • 자바스크립트
  • 노개북
  • 회고
  • 릿코드
  • TypeScript
  • 개발자
  • 노마드북클럽
  • 프론트엔드
  • JavaScript
  • 오늘의회고

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
개발후라이

개발후라이

Problem Solved/LeetCode

[LeetCode] 387번 문제 - First Unique Character in a String

2020. 5. 22. 13:18
반응형

문제

387번 문제 - First Unique Character in a String

문제 설명

주어진 문자열에서 첫 번째로 유일한 문자의 index를 찾아 반환하는 문제

  1. 중복되는 값을 저장하는 duplicateMap과 유일한 값을 저장하는 uniqueMap을 생성한다.
  2. 문자열을 배열로 변환해 반복문을 돌면서 uniqueMap 또는 duplicateMap에 해당 문자가 존재하는지 확인한다.
  3. 두 Map 중에 하나에 들어가 있다면 중복 문자라는 뜻이므로 uniqueMap에서 삭제해 준다.
  4. 두 Map 어디에도 들어있지 않다면 처음 나온 글자이거나 유일한 문자이므로 uniqueMap에 담는다.
  5. 반복문이 끝나고 uniqueMap의 첫 번째 글자를 리턴한다.
  6. 만약 uniqueMap에 어떤 값도 없다면 문제의 조건대로 -1을 반환한다.
  • 사실 duplicateMap은 문제에 직접적으로 쓰이지 않는 Map이다.
  • Map을 하나로 쓰려면 각 글자마다 count 를 value로 가지고 있게 하면 된다. 문제를 풀고 보니 이 방법이 더 좋아 보인다.

성공 코드

const firstUniqChar = (s) => {
    let duplicateMap = new Map();
    let uniqueMap = new Map();

    s.split('').forEach((char, index) => {
        if (uniqueMap.has(char)) {
            duplicateMap.set(char, index);
            uniqueMap.delete(char);
        } 
        else if (duplicateMap.has(char)) {
            uniqueMap.delete(char);
        }
        else uniqueMap.set(char, index);
    })

    if (!uniqueMap.size) return -1;
    return uniqueMap.values().next().value
};
반응형
저작자표시 (새창열림)
    'Problem Solved/LeetCode' 카테고리의 다른 글
    • [LeetCode] 125번 문제 - Valid Palindrome
    • [LeetCode] 242번 문제 - Valid Anagram
    • [LeetCode] 36번 문제 - Valid Sudoku
    • [LeetCode] 1번 문제 - Two Sum
    개발후라이
    개발후라이
    어제보다 오늘 발전하기 위한 공간 https://github.com/choisohyun

    티스토리툴바