원문 : https://leetcode.com/problems/jewels-and-stones/
제목 : Jewels and Stones ( 보석과 돌맹이 )
난이도 : 쉬움
정답률 82.6%
LeetCode 사이트에서 가장 쉬운 알고리즘 문제입니다.
문제
You're given strings J
representing the types of stones that are jewels, and S
representing the stones you have. Each character in S
is a type of stone you have. You want to know how many of the stones you have are also jewels.
The letters in J
are guaranteed distinct, and all characters in J
and S
are letters. Letters are case sensitive, so "a"
is considered a different type of stone from "A"
.
Example 1:
Input: J = "aA", S = "aAAbbbb" Output: 3
Example 2:
Input: J = "z", S = "ZZ" Output: 0
Note:
S
andJ
will consist of letters and have length at most 50.- The characters in
J
are distinct.
입력값 J 와 S의 문자열을 비교하고, 같은 문자가 몇개가 있는지 구하는 알고리즘 입니다.
Example 1: 입력값 J에 'a' 와 'A' 2가지의 문자가 있고 S 에는 'a' 와 'A' , 'b' 3가지 중
같은 문자는 3개 이므로 출력값은 3이 됩니다.
Example 2: 입력값 J 에 'z' 1가지의 문자가 있고, 입력값 S에는 'Z' 1가지 문자가 있습니다.
같은 문자는 0개 이므로 출력값는 0입니다.
따라서, 대소문자를 구별하며, 같은 문자가 몇개인지를 찾는 알고리즘을 구현해야 합니다.
알고리즘 구현
class Solution {
public:
int numJewelsInStones(string J, string S) {
int count = 0;
for (unsigned int n = 0; n < J.size(); n++)
{
char temp = J[n];
for (unsigned int i = 0; i < S.size(); i++)
{
if (temp == S[i])
{
count++;
}
}
}
return count;
}
};
입력값 J = "aA"
입력값 S = "aAAbbbb"
J[0] = 'a' 와 S의 모든 문자를 비교할 시 같은 문자는 1개이며 count를 1이 증가한다
J[1] = 'A' 와 S의 모든 문자를 비교할 시 같은 문자는 2개이며 count를 2이 증가한다.
따라서 count = 1 + 2 = 3 이며
출력값은 3입니다.
이 과정에서 모든 문자를 비교하고 탐색하므로 완전탐색형임을 알 수 있습니다.
성능
런타임 시간은 0ms 입니다.
댓글