코린이의 소소한 공부노트

[LeetCode/Easy] 2506. Count Pairs Of Similar Strings 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2506. Count Pairs Of Similar Strings

무지맘 2023. 5. 6. 00:05

1. Input

1) String[] words

 

2. Output

1) words의 요소들 중 비슷한 문자열이 있다면 그 문자열의 쌍의 수를 반환

- 비슷하다는 것은 문자열의 구성이 같다는 것을 뜻한다.

 

3. Constraint

1) 1 <= words.length <= 100

2) 1 <= words[i].length <= 100

3) words의 요소들은 모두 영어 소문자로 이루어져 있다.

 

4. Example

Input: words = ["aba","aabb","abcd","bac","aabc"] -> Output: 2

설명:

- 0번째와 1번째가 비슷하다. 둘 다 a,b로 이루어져 있기 때문이다.

- 3번째와 4번째가 비슷하다. 둘 다 a,b,c로 이루어져 있기 때문이다.

 

5. Code

1) 첫 코드(2023/05/05)

class Solution {
    public int similarPairs(String[] words) {
        int answer = 0;
        for(int i=0 ; i<words.length-1 ; i++){
            ArrayList<Character> list1 = new ArrayList<>();
            for(int j=0 ; j<words[i].length() ; j++)
                if(!list1.contains(words[i].charAt(j)))
                    list1.add(words[i].charAt(j));
            list1.sort(Comparator.naturalOrder());
            for(int j=i+1 ; j<words.length ; j++){
                ArrayList<Character> list2 = new ArrayList<>();
                for(int k=0 ; k<words[j].length() ; k++)
                    if(!list2.contains(words[j].charAt(k)))
                        list2.add(words[j].charAt(k));
                list2.sort(Comparator.naturalOrder());
                boolean dif = list1.size()!=list2.size();
                for(int k=0 ; k<list2.size() && !dif ; k++)
                    if(list1.get(k)!=list2.get(k))
                        dif = true;
                if(!dif)
                    answer++;
            }
        }
        return answer;
    }
}