공부, 알고리즘/LeetCode (리트코드)

[리트코드/JAVA] 771. Jewels and Stones

박주단 2021. 4. 2. 17:46

leetcode.com/problems/jewels-and-stones/

 

Jewels and Stones - 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

# 문제설명

You're given strings jewels representing the types of stones that are jewels, and stones representing the stones you have. Each character in stones is a type of stone you have. You want to know how many of the stones you have are also jewels.

 

Letters are case sensitive, so "a" is considered a different type of stone from "A".

 

String 타입의 보석 종류가 담긴 jewels와 원석의 종류가 담긴 stones가 있습니다.
jewels와 stones의 값 중에서 총 몇 개의 보석이 같은지 확인하세요.

한 글자라도 같으면 같은 보석으로 간주하며 "a"와 "A"를 구분하므로 다른 원석으로 간주합니다.

# 제한사항

  • 1 <= jewels.length, stones.length <= 50
  • jewels and stones consist of only English letters.
  • All the characters of jewels are unique.

# 입출력 예

Example 1:

Input: jewels = "aA", stones = "aAAbbbb"

Output: 3

 

Example 2:

Input: jewels = "z", stones = "ZZ"

Output: 0

 

# 풀이

class Solution {
  public int numJewelsInStones(String jewels, String stones) {
    String[] spJewels = jewels.split("");
    String[] spStones = stones.split("");

    int output = 0;
    for(int i=0; i<spJewels.length; i++) {

      for(int j=0; j<spStones.length; j++) {

      	if(spJewels[i].equals(spStones[j])) output++;
      }
    }

    return output;

  }
}

 

 

#3, 4

입력받은 jewels와 stones의 문자열을 한 글자씩 분리하여 String배열에 각각 담아둡니다.

 

#6

총 몇 개의 원석이 동일한지 리턴할 int형 변수(output)를 선언합니다.

 

#7

두 개의 for문으로 몇 개의 원석이 같은지 계산합니다. 첫 번째 for문은 jewels 인덱스 위치를 잡아줍니다.

한 글자씩 분리해서 담아둔 spJewels에서 "a"를 spStones의 전체 배열과 비교하고, 두 번째 턴에서 "A"를 비교하는 식으로 진행됩니다.

 

#8

두 번째 for문은 spStones의 인덱스를 잡아줍니다. 안에 if문으로 spJewels와 spStones의 값을 비교합니다.

값이 동일할 때 마다 output에 +1을 합니다.

 

#15

for문이 종료되면 output을 리턴합니다.