본문 바로가기
프로그래밍 언어(Programming Languages)/LeetCode

[코딩 인터뷰] LeetCode - 242. Valid Anagram 파이썬 카운터 사용법

by 데이터 벌집 2024. 1. 7.
반응형

안녕하세요 여러분! 😄👋 오늘은 제가 코딩을 공부하면서 배운 재미있는 문제 하나를 여러분과 공유하려고 해요. 바로 '유효한 애너그램'을 찾는 문제예요. 🧐💻 이 문제는 코딩 테스트나 알고리즘 연습에 자주 등장하는 유형 중 하나랍니다!

 

 

애너그램

 


🔍 문제 설명

 

'유효한 애너그램(Valid Anagram)' 문제는, 두 문자열 s와 t가 주어졌을 때, t가 s의 애너그램인지 아닌지를 판별하는 문제예요. 애너그램이란, 다른 단어나 구절의 문자를 재배열하여 새로운 단어나 구절을 형성하는 것을 말해요. 중요한 것은 모든 원래 문자를 정확히 한 번씩만 사용해야 한다는 거죠!

 

예를 들어, s = "anagram", t = "nagaram"인 경우에는 t가 s의 애너그램으로, true를 반환해야 해요. 반면에, s = "rat", t = "car"인 경우에는 애너그램이 아니므로 false를 반환하면 돼요.

 

 

릿코드 문제보러가기


📚 알아야 할 개념 공부하기

 

이 문제를 해결하기 위해선 '해시 테이블(Hash Table)'에 대해 알아볼 필요가 있어요. 해시 테이블은 키(key)에 값(value)을 매핑할 수 있는 데이터 구조로, 빠른 데이터 검색을 가능하게 해줘요. 파이썬에서는 딕셔너리(Dictionary)가 이 해시 테이블의 역할을 하죠!

 

또한, '문자열 순회(String Iteration)'와 '조건문(Conditional Statements)'에 대한 이해도 필요해요. 각 문자열의 문자를 순회하면서, 문자의 발생 횟수를 해시 테이블에 기록한 다음, 두 해시 테이블을 비교하는 방식으로 문제를 풀 수 있답니다.


🧑‍💻 문제 풀어보기

 

그럼 간단한 코드 예제로 문제를 풀어볼까요? 파이썬의 collections 라이브러리에서 제공하는 Counter 클래스를 활용하면 이 문제를 매우 쉽게 해결할 수 있어요.

 

from collections import Counter

def isAnagram(s, t):
    return Counter(s) == Counter(t)

# 예제 실행
print(isAnagram("anagram", "nagaram"))  # True
print(isAnagram("rat", "car"))          # False

 

이렇게 Counter를 이용하면 각 문자열에서 문자의 등장 횟수를 쉽게 카운트하고, 두 문자열의 카운트 결과가 같은지를 비교하여 애너그램 여부를 판단할 수 있어요.


코딩 문제를 풀면서 기본적인 데이터 구조와 알고리즘에 대한 이해를 깊게 할 수 있었어요. 이번 문제처럼, 실제로 코딩 테스트에서 많이 나오는 유형을 미리 연습해보는 것은 실력 향상에 큰 도움이 된답니다. 여러분도 이 문제를 직접 풀어보면서 코딩 실력을 한 단계 업그레이드 해보세요! 💪💡

여러분의 코딩 여정에 항상 행운이 함께하길 바랍니다! 🍀🚀

반응형