[LeetCode] Keyboard Row

아르당·2026년 1월 21일

LeetCode

목록 보기
103/134
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

문자열 배열 words가 주어졌을 때, 아래 이미지와 같이 미국식 키보드의 한 줄에 있는 알파벳 글자만 사용해서 입력할 수 있는 단어를 반환해라.

참고로, 문자열은 대소문자를 구분하지 않으며, 같은 글자의 소문자와 대문자 모두 같은 행에 있는 것으로 간주된다.

미국식 키보드는 다음과 같다.

  • 첫 번째 줄은 "qwertyuiop"
  • 두 번째 줄은 "asdfghjkl"
  • 세 번째 줄은 "zxcvbnm"

Example

#1
Input: words = ["Hello", "Alaska", "Dad", "Peace"]
Output: ["Alaska", "Dad"]
Explanation: 대소문자를 구분하지 않기 때문에 미국 키보드에서는 "a"와 "A" 모두 두 번째 줄에 있다.

#2
Input: words = ["omk"]
Output: []

#3
Input: words = ["adsdf", "sfd"]
Output: ["adsdf", "sfd"]

Constraints

  • 1 <= words.length <= 20
  • 1 <= words[i].length <= 100
  • words[i]는 영문자(소문자와 대문자 모두)로 구성된다.

Solved

class Solution {
    public String[] findWords(String[] words) {
        String s1 = "qwertyuiop";
        String s2 = "asdfghjkl";
        String s3 = "zxcvbnm";
        List<String> list = new ArrayList<>();

        for(int i = 0; i < words.length; i++){
            String[] word = words[i].toLowerCase().split("");
            String temp = "";
            boolean flag = true;

            if(s1.contains(word[0])) temp = s1;
            else if(s2.contains(word[0])) temp = s2;
            else temp = s3;

            for(int j = 1; j < word.length; j++){
                if(!temp.contains(word[j])){
                    flag = false;
                    break;
                }
            }

            if(flag) list.add(words[i]);
        }

        return list.toArray(new String[list.size()]);
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글