스터디/알고리즘 스터디

[릿코드] 242 Valid Anagram (21.05.30)

sleesm 2021. 5. 30. 18:03

 

 

 

오늘도 역시

 

 

기출문제 푸는 날이므로

 

 

릿코드!!!!!!!!!!!!!

 

 

본격적 재밌고 어려운 문제를 풀 것 같지만 

.

.

.

나를 제외한 모두가 시험기간이므로 

쉬운 문제 하나를 풀기로 했다 ㅎㅎㅎㅎㅎ......

 

 

 

 


 

 

 

 

그래서

 

오늘의 문제는

 

 

바로 바로

 

 

LeetCode 242. Vlid Anagram

 

 

Given two strings s and t, return true if t is an anagram of s, and false otherwise.

 

Constraints:

  • 1 <= s.length, t.length <= 5 * 104
  • s and t consist of lowercase English letters.

 

 

문제 사이트 : https://leetcode.com/problems/valid-anagram/

 

Valid Anagram - 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

 

 

 

 

Anagram의 뜻을 잘 몰랐기 때문에

문제 해석에 어려움이 있어 스터디 친구가 설명해주었다!!!!!

 

 

s 와 t 가 입력값이라면, s의 순서를 바꿔서 t를 만들 수 있으면 TRUE




그래서 . . . 

 

 


 

여기서 핵심 포인트!!!

 

 

- 어떻게 해당 문자열의 포함 여부를 확인할 것인가

 

- contains 뿐 아니라 순서가 바뀌는 것도 확인해야 한다!!!

 


 

 

 

 

 

 

 

직접 작성해본 소스코드 및 간단한 설명

class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length() != t.length())
            return false;
        
        List<String> list = new ArrayList(); 
        
        String [] sArray = s.split("");
        for(String tmp : sArray){
            list.add(tmp);
        }
        
        String [] tArray = t.split("");
        for(String tmp : tArray){
            if(!list.contains(tmp))
                return false;
            else{
                list.remove(tmp);
            }
        }
        return true;
    }
}

 

 

  • 먼저 contains() 함수를 활용하여 값을 비교하자!!

 

하지만, 이걸로는 그 값이 몇 번 나오는지 확인할 수 없다!!

그래서 나온 건 remove 혹은 pop을 할 수 있는 자료구조를 사용하자는 것!!

 

 

 

 

 


ArrayList 구조를 사용하여

 

- add()

- contains()

- remove()

 

 

사용하여 코드를 작성하자!!!!


 

 

 

 

  • 입력값 s를 ArrayList에 넣기 (add()함수 사용)

 

  • t 값을 하나하나 살펴보면서 ArrayList에 포함하는지 확인하기 (contains() 사용)

 

  • 포함한다면, 해당 요소를 remove 해주기 (개수를 따지기 위함!!!)

 

 

 

 

 

이렇게 코드가 완성되었다!!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

LeetCode 릿코드

 

SUBMIT 결과 !!!!

 

 

 

ACCEPTED !!!!!!!

 

릿코드 242번 채점 결과

 

 

 

 

 

 

 

 

 

 

 

 


스터디하면서 얻은 것들

  • s와 t 모두 sort() 한 후에 비교하는 방법이 있다!!
  • 배열에 두고 개수를 확인하면서 하는 방법이 있다!!

 

 

 

 

 

 

 

 

 

 

 

 

오늘의 스터디는

 

이렇게

 

끝 !!!!!!!!!!!!!!!!!!!!!!!