From bbf0f2a6d31a9b149eb11ca08eef27e790d7d0d2 Mon Sep 17 00:00:00 2001 From: KyungJin Jung Date: Mon, 29 Jun 2026 20:22:28 +0900 Subject: [PATCH 1/2] 242. Valid Anagram --- valid-anagram/okyungjin.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 valid-anagram/okyungjin.py diff --git a/valid-anagram/okyungjin.py b/valid-anagram/okyungjin.py new file mode 100644 index 0000000000..7b418eee47 --- /dev/null +++ b/valid-anagram/okyungjin.py @@ -0,0 +1,32 @@ +# https://leetcode.com/problems/house-robber/description/ + +# [요구사항] +# 문자열 두 개가 주어졌을 때 애너그램이 맞는지 아닌지를 반환하는 문제 +# 애너그램이란? 하나의 단어나 구에 들어 있는 글자들을 모두, 각각 정확히 한 번씩만 사용해서 순서를 바꾸어 만든 다른 단어나 구를 의미한다. +# 두 문자열이 애너그램이면 True, 아니면 False 반환 + +# [접근법] +# 1. 길이가 다르면 애너그램이 아니므로 바로 False를 반환한다. +# 2. s의 문자 개수를 센 뒤, t를 순회하며 하나씩 차감한다. +# 3. 없는 문자이거나 개수가 부족한 문자를 만나면 False를 반환한다. +# 4. 모든 문자를 정상적으로 처리하면 True를 반환한다. + +# Time: O(N) +# Space: O(N) + +from collections import Counter + +class Solution: + def isAnagram(self, s: str, t: str) -> bool: + if len(s) != len(t): + return False + + counter = Counter(s) + + for char in t: + if counter[char] >= 1: + counter[char] -= 1 + else: + return False + + return True From 3e04e11fdb08b9b890f2f28da8c4616f836cf85f Mon Sep 17 00:00:00 2001 From: KyungJin Jung Date: Wed, 1 Jul 2026 23:19:50 +0900 Subject: [PATCH 2/2] 70. Climbing Stairs --- climbing-stairs/okyungjin.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 climbing-stairs/okyungjin.py diff --git a/climbing-stairs/okyungjin.py b/climbing-stairs/okyungjin.py new file mode 100644 index 0000000000..48104dd462 --- /dev/null +++ b/climbing-stairs/okyungjin.py @@ -0,0 +1,24 @@ +# 시간 복잡도: O(N) +# 공간 복잡도: O(1) + +# [요구사항] +# 1. 계단의 개수 n이 주어진다. +# 2. 계단은 1칸 또는 2칸 올라갈 수 있다. +# 3. 마지막 칸에 도달할 수 있는 경우의 수를 반환한다. + +# [접근법] +# 1. 계단에 올라올 수 있는 경우의 수는 전전칸까지의 경우의 수 (prev2) + 전칸까지의 경우의 수 (prev1) 를 더한 값이다. +class Solution: + def climbStairs(self, n: int) -> int: + if n <= 2: + return n + + prev2 = 1 # 전전칸 까지의 경우의 수 + prev1 = 2 # 전칸 까지의 경우의 수 + + for _ in range(2, n): + curr = prev2 + prev1 # 현재 계단 + prev2 = prev1 + prev1 = curr + + return prev1