From 5b028f3608338601d0c0513d8821a0263c0cc257 Mon Sep 17 00:00:00 2001 From: socow Date: Wed, 19 Nov 2025 18:55:12 +0900 Subject: [PATCH 1/2] feat:valid-anagram climbing-stairs --- climbing-stairs/socow.py | 17 +++++++++++++++++ valid-anagram/socow.py | 16 ++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 climbing-stairs/socow.py create mode 100644 valid-anagram/socow.py diff --git a/climbing-stairs/socow.py b/climbing-stairs/socow.py new file mode 100644 index 0000000000..02720dbcaf --- /dev/null +++ b/climbing-stairs/socow.py @@ -0,0 +1,17 @@ +# 문제내용 +# 한번에 1칸 또는 2칸을 오를수있음 정확히 n칸에 도달할수있는 방법수를 구하라 +# 계단 문제 = 피보나치 수열 +class Solution: + def climbStairs(self, n: int) -> int: + # 1칸 또는 0칸 계단은 방법이 1가지뿐 + if n <= 1: + return 1 + + # dp[0] = 1, dp[1] = 1 + prev2, prev1 = 1, 1 # (n-2), (n-1) + + # n=2부터 n까지 반복 + for _ in range(2, n + 1): + curr = prev1 + prev2 # 현재 계단 방법 수 = 이전 두 계단의 합 + prev2, prev1 = prev1, curr # 한 칸씩 전진 + return prev1 diff --git a/valid-anagram/socow.py b/valid-anagram/socow.py new file mode 100644 index 0000000000..9302ac6d4f --- /dev/null +++ b/valid-anagram/socow.py @@ -0,0 +1,16 @@ +# 문제내용 +# 두 문자열 s와 t가 주어질 때, t가 s의 애너그램(anagram)인지 판별하라. +# 애너그램이란 같은 문자를 같은 개수만큼 사용해 순서만 바꾼 문자열을 말해. +# 결과: 애너그램이면 True, 아니면 False. + +# sorted(): 문자열을 한 글자씩 잘라 오름차순 정렬해서 비교 (간단, 직관) +# 1. sorted()로 두 문자열을 정렬해서 비교 +# 2. 정렬된 경과가 같으면 True 아니면 False +# 시간복잡도: O(n log n) +# 공간복잡도: O(n) + +class Solution: + def isAnagram(self, s: str, t: str) -> bool: + if len(s) != len(t): + return False + return sorted(s) == sorted(t) From 0f3d6acfd33c13a73ba5ce0f50e286edd230389c Mon Sep 17 00:00:00 2001 From: socow Date: Wed, 19 Nov 2025 18:59:59 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- climbing-stairs/socow.py | 1 + 1 file changed, 1 insertion(+) diff --git a/climbing-stairs/socow.py b/climbing-stairs/socow.py index 02720dbcaf..f2d888da33 100644 --- a/climbing-stairs/socow.py +++ b/climbing-stairs/socow.py @@ -1,6 +1,7 @@ # 문제내용 # 한번에 1칸 또는 2칸을 오를수있음 정확히 n칸에 도달할수있는 방법수를 구하라 # 계단 문제 = 피보나치 수열 + class Solution: def climbStairs(self, n: int) -> int: # 1칸 또는 0칸 계단은 방법이 1가지뿐