전체 글 - Table of Contents337

😍 LeetCode Easy Collections II - 20 Problems 0283. Move Zeroes / 0344. Reverse Stringclass Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ length=len(nums) if length != 1: first_encountered = False for x in range(length-1): if nums[x] == 0: if not first_encountered: .. LeetCode Problems/Easy 2024. 9. 2.
★Implementation&Simulation Intermediate II - 3 Solved★ ★ 30458 팰린드롬 애너그램 ★import sysinput=sys.stdin.readlineN=int(input())S=input().rstrip()if N%2==1: left,right=S[:len(S)//2],S[len(S)//2+1:]else: left,right=S[:len(S)//2],S[len(S)//2:]s=left+rightkinds=set(s)for kind in kinds: if s.count(kind)%2!=0: print('No') sys.exit()print('Yes') 😘 바꾸는 횟수는 무제한이므로, 주어진 문자열의 길이가 짝수/홀수에 따라 주어진 문자의 kind 개수 짝/홀 따지면 된다.★ 30618 donstructive ★N=i.. BOJ/🥈 2024. 8. 29.
😊 LeetCode Easy Collections I - 20 Problems 0001. Two Sum / 0268. Missing Numberclass Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: dct = dict() for i in range(len(nums)): dct[nums[i]] = i for i in range(len(nums)): if (target-nums[i]) in dct: if i!=dct[target-nums[i]]: return [i,dct[target-nums[i]]]class Solution: def missingNumber.. LeetCode Problems/Easy 2024. 8. 5.
👔 Tuning fashionMNIST Classifier I: Adjusting the Number of epochs 👔 유명한 fashionMNIST Classifier에 Convolution과 Pooling을 적용한 후 성능 증가를 직접 경험해보았다. 이제 다양한 model tuning과 epochs를 조절하면서 소폭의 성능 증가에 기여할 수 있는 지 알아보도록 해보자! 👔 모든 코드는 GitHub 클릭! 👔 default fashionMNIST Classifier 모델: 2개 연산 → Flatten() → Dense(128, relu) → Dense(10, softmax)① Adjusting the Number of Epochs👔 epochs란 주어진 batch_size에 맞는 여러 batch를 미리 만들고 난 후, 동일 batch training을 반복적으로 몇 번 수행하는 가이다. 예를 들어 5 epo.. Deep Learning/Experiments 2024. 8. 2.
🎊Binary Heap 🎊 intro🎊 Priority Queue와 연결지어 설명할 수 있는 Binary Heap data structure에 대해 자세히 알아보자. 앞서 학습한 Priority Queue는 일종의 Abstract Data Structure(ADT)로, binary heap을 추상화한 개념이라 볼 수 있다. 즉, 실제 priority queue는 binary heap이라 생각하면 된다. priority queue의 우선순위가 최대 먼저, 또는 최소 먼저라면 binary heap으로 tree structure를 만들어 tree structure에서 우선순위에 맞게 꺼내준다. 최대 먼저라면 max-heap, 최소 먼저라면 min-heap이라 부른다. (여기서 priority queue는 무조건 binary he.. Computer Science/Data Structures 2024. 7. 17.
★Divide & Conquer Upper-Advanced I - 7 Solved★ ★ 11442 홀수번째 피보나치 수의 합 ★n=int(input())BIG=1_000_000_007def get_power(a,b,c): if b  🧚 F1부터 Fn까지의 홀수번째 피보나치 수의 합은 n이 홀수일 경우 F(n+1), n이 짝수일 경우 F(n)으로 구하면 된다. (피보나치 포스팅 증명 참조) 이 때 F 피보나치 값은 행렬의 분할정복 거듭제곱 알고리즘을 활용해 O(logn)만에 구하면 된다.★ 11443 짝수번째 피보나치 수의 합 ★n=int(input())BIG=1_000_000_007def get_power(a,b,c): if b =0 else ans+BIG) 🧚 n이 짝수일 경우 F1~Fn까지의 짝수번째 피보나치 수의 합은 F(n+1)-1, n이 홀수일 경우 짝수번째 피보.. BOJ/🥇 2024. 7. 3.
★Divide & Conquer Expert(Easy) I - 1 Solved★ ★ 11440 피보나치 수의 제곱의 합 ★n=int(input())BIG=1_000_000_007def get_power(a,b,c): if b  🙉 F1부터 Fn까지의 모든 피보나치 수의 제곱의 합은 아래와 같이 Fn*Fn+1 결과로 표현할 수 있다.🙉 이 때 Fn에서의 n이 매우 큰 수이므로 Fn을 구하기 위해 분할정복을 이용한 행렬 거듭제곱으로 O(logn)만에 구해야 한다. Fn과 Fn+1을 각각 O(logn)만에 구한 뒤, modulo multiplication property에 의해 ((Fn%BIG) * (Fn+1%BIG))%BIG를 최종 답으로 출력! BOJ/🏅 2024. 6. 30.
🍣 Fibonacci Sequence 🍣 유명하고 유명한 피보나치 수열(Fibonacci Sequence)은 아래와 같이 표현할 수 있다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765 ...① Recursive Definition🍣 즉, Fn을 n번째 피보나치 수라고 한다면 재귀 방식으로 Fn을 아래와 같이 표현할 수 있다. F(n) = F(n-1) + F(n-2)with initial conditions F(0) = 0 and F(1) = 1 : 즉, Fn을 구할 때 Fn-1과 Fn-2를 사용해 재귀적 호출로 Fn을 정의할 수 있다. Fn을 재귀적으로 구하는 알고리즘의 시간복잡도는 O(2^n). Fn 호출에 동일 재귀함수 .. Computer Science/Algorithms 2024. 6. 26.
★Divide & Conquer Advanced I - 5 Solved★ ★ 18291 비요뜨의 징검다리 건너기 ★import sysinput=sys.stdin.readlinedef power_divide_conquer(a,b,c): if b==1: return a%c halved = power_divide_conquer(a,b//2,c) if b%2==0: return ((halved%c) * (halved%c)) %c else: return ((halved%c) * (halved%c) * (a%c))%cBIG = 1000000007for _ in range(int(input())): N=int(input()) if N==1: print(1) elif N==2: pri.. BOJ/🥇 2024. 6. 15.
📲 Divide&Conquer * intro🍻 분할(Divide)하고 정복(Conquer)하는 알고리즘은 분할 → 정복 → 결합 크게 세 단계로 진행 🍻① 분할(Divide): 주어진 문제를 더 작은 여러 개의 sub-problem으로 분할한다.② 정복(Conquer): 재귀적으로 sub-problem들을 각각 해결한다. 문제들을 각각 독립적으로 해결. ③ 결합(Combine): 각각의 sub-problem 해결 결과를 묶어 전체 문제의 최종 솔루션을 도출! 🍻 큰 problem을 여러 개의 sub-problem으로 나누는 과정에서 recursion 재귀가 사용된다. 분할을 재귀로 구현하면서 나누고 더 이상 나눌 수 없는 sub-problem 각각 conquer(정복)한 다음 각 sub-problem별 conquer된 결과를 c.. Computer Science/Algorithms 2024. 6. 8.
🚀 Power by Divide and Conquer intro🅰️ 분할정복(divide & conquer)은 복잡한 문제를 해결할 수 있는 여러 쉬운 문제들로 쪼개서 해결하는 접근법. 정수의 거듭제곱을 구하는 과정에서 분할정복 기법을 활용해 더 효율적인 시간 내에 진행할 수 있다. '실수 a와 음이 아닌 정수 x에 대해 a^x를 구하는 문제'① x = 1이면 답은 a로 직접 해결→ 시간복잡도 O(1) ②  x > 1이면 sub-problems로 쪼개기.🅰️ x가 짝수라면 a^(x/2) x a^(x/2)🅰️ x가 홀수라면 a^((x-1)/2) x a^ ((x-1)/2) x a→ 시간복잡도 T(x) = T(x/2) + O(1). 즉 T(x) = O(logx)example 7^10🅰️ 예를 들어 7^10을 구하는 문제가 있다고 하자. 두 가지 접근법으로.. Computer Science/Algorithms 2024. 6. 6.
Scalar & Vector 1. Scalar"단순히 변수로 저장되어 있는 숫자" ① vector 혹은 matrices에 곱해지는 경우 해당 값에 곱한 값으로 결정 ② 단일숫자 ③ 변수에 저장 시 소문자를 이용하여 표기 ④ 실수 & 정수 모두 가능 ⑤ 벡터의 크기를 맘대로 늘이는 걸 scaling한다고 해서 이 때 측정되는 크기를 scalar 라고 한다2. Vectorintro① 파이썬에서 주로 list로 사용된다. 숫자를 원소로 가지는 list 또는 array ② 아래 그림에서 벡터 x는 행벡터, xT는 열벡터 ③ 파이썬에서는 코드로 아래와 같이 벡터를 표현할 수 있다. list 또는 np array로 여러 원소가 순서를 갖는 모음으로 표현 가능하다.x = [1, 7, 2]x = np.array([1, 7, 2]) ④ 벡터에 있는.. Math & Linear Algebra/Concepts 2024. 6. 3.