leetcode

500. Keyboard Row

2022. 11. 27. 14:54
목차
  1. 문제링크
  2. 문제정보
  3. 다른사람의 풀이를 참고..

문제링크

https://leetcode.com/problems/keyboard-row/

 

Keyboard Row - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

문제정보

 

요소가 문자열로 이루어진 배열 words가 주어집니다.
각 요소가 키보드 한줄로 칠 수 있는 경우 그 요소를 담은 배열을 리턴해주세요

the first row consists of the characters "qwertyuiop",
the second row consists of the characters "asdfghjkl", and
the third row consists of the characters "zxcvbnm".

example
Input: words = ["Hello","Alaska","Dad","Peace"]
Output: ["Alaska","Dad"]

 

 

다른사람의 풀이가 흥미로워서 가져와봤습니다.


다른사람의 풀이를 참고..

var findWords = function(words) {
    let row1 = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'];
    let row2 = ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'];
    let row3 = ['z', 'x', 'c', 'v', 'b', 'n', 'm'];
    let answer = [];
    
    words.forEach(x => {
        let spliter = x.toLowerCase().split('');
        
        if(spliter.every(j => row1.includes(j))) answer.push(x)
        if(spliter.every(j => row2.includes(j))) answer.push(x)
        if(spliter.every(j => row3.includes(j))) answer.push(x)
    })
    
    return answer;
};

forEach에 대한 이해가 많이 부족한 편인데

forEach를 잘 활용한 풀이가 있어서 흥미롭게 봤습니다.

 

추가로 every()와 includes() 역시 제가 잘 활용할 생각을 못하는 것들이라서

간단한 설명을 아래에 적어두겠습니다.

 

 

 

  .every()메서드는 배열 안의 모든 요소가 주어진 판별 함수를 통과하는지 테스트하며
  boolean값을 반환함 .every()는 콜백함수에요! 모든 요소가 참인 경우 true를 반환합니다.

  .includes()메서드는 배열이 항목 사이에 특정 값을 포함하는 여부를 확인하여
  boolean값을 반환함 .includes는 fromindex를 지정해주지않으면 인덱스 0부터 끝까지 순회하면서
  해당 값이 있는지를 찾는 메서드입니다.

  .forEach()메서드는 주어진 함수를 배열 요소 각각에 대해 실행하는 메서드입니다.

  즉 각 요소를 forEach()메서드를 통해서 각각의 요소들을
  spliter라는 변수에 모두 소문자로 만들고 하나하나쪼개진 배열로 만들어서 할당시켜줍니다.
  
  그러니까 매개변수가 이렇게 주어진다면 ["Hello","Alaska","Dad","Peace"]
  spliter된 시점에서 각 요소들의 상태는 이렇습니다.

 

  [ 'h', 'e', 'l', 'l', 'o' ]
  [ 'a', 'l', 'a', 's', 'k', 'a' ]
  [ 'd', 'a', 'd' ]
  [ 'p', 'e', 'a', 'c', 'e' ]

  이 상태에서 every의 모든 요소 j를 각각 row1.includes(j)에 넣고 검사합니다.
  그러면 만약 j가 row1에 includes인 경우 true의 형태로 배열에 담기게되겠죠!
  그 과정을 각 요소에 모두 반복한 뒤 모든 배열요소가 true의 형태가 되어있다면
  every는 true를 반환할것입니다.

  그리고 if문을 통해 every가 true를 반환할시 answer배열에 x를 push해주면
  아무런 가공이 되지않은 문자열의 형태로 answer배열에 push되는 원리에요!!

 

 

반응형
저작자표시 비영리 (새창열림)

'leetcode' 카테고리의 다른 글

66.plus One  (0) 2022.11.29
13. Roman to Integer  (0) 2022.11.28
231. Power of Two  (0) 2022.11.26
34. Find First and Last Position of Element in Sorted Array Medium  (0) 2022.11.25
35. Search insert Position easy  (0) 2022.11.24
  1. 문제링크
  2. 문제정보
  3. 다른사람의 풀이를 참고..
'leetcode' 카테고리의 다른 글
  • 66.plus One
  • 13. Roman to Integer
  • 231. Power of Two
  • 34. Find First and Last Position of Element in Sorted Array Medium
냠냠맨
냠냠맨
프론트엔드 개발 전반을 다루는 기술 블로그입니다.
냠냠맨
React와 TypeScript를 좋아하는 개발자
냠냠맨
전체
오늘
어제
  • all category (434)
    • CMC (0)
    • best (11)
    • 년간회고 (1)
    • cheetsheet (15)
    • 프로젝트 회고 (3)
    • 서평 (3)
    • SEO Study (1)
    • 프로젝트 진행기 (10)
    • testcode (9)
    • yarnberry (7)
    • css (21)
    • typescript (15)
    • redux (7)
    • react (43)
    • Next.js (9)
    • Nestjs (3)
    • javascript (44)
    • programmers (67)
    • leetcode (41)
    • frontend (41)
    • backjoon (1)
    • Next.js Beta Docs 번역 (12)
    • TIL (15)
      • html (3)
    • Network (12)
      • 간단 정리 시리즈 (2)
      • 질답 준비 (0)
    • 자료구조와 알고리즘 (2)
    • CS (4)
      • OS (1)
    • 취업준비 (2)
    • zoom websocket (2)
    • talk (6)
    • 면접대비 (1)
    • 코드스테이츠 프론트 (5)
    • 간헐적 회고 (18)

블로그 메뉴

  • leetcode
  • programmers
  • javascript
  • html
  • css

공지사항

인기 글

태그

  • 개발
  • LeetCode
  • 개발자
  • teosprint
  • 프론트엔드
  • 코드스테이츠 #프론트엔드
  • frontend
  • JavaScript
  • CSS
  • 말풍선
  • 주니어개발자
  • 테오의스프린트
  • border말풍선
  • 테오의스프린트17기

최근 댓글

최근 글

hELLO · Designed By 정상우.
냠냠맨
500. Keyboard Row
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.