전체 글
-
[프로그래머스 | 코딩테스트 고득점 Kit] 해시 - 의상알고리즘/문제풀이 2026. 10. 23. 19:49
# 해시 풀이def solution(colthes): counts = {} for name, category in clothes: counts[category] = counts.get(category, 0) + 1 answer = 1 for count in counts.values(): answer *= count + 1 return answer - 1딕셔너라로 종류별 의상의 수를 센 뒤, 각 종류마다 입지 않는 경우까지 더하여 곱한다이때, 모든 종류를 입지 않는 경우가 포함되므로 -1을 한다. ※ 딕셔너리 주요 연산len(a): 요소의 개수 리턴a[key]: 키를 조회하여 값 리턴a[key] = value: 키/값 삽입key ..
-
[프로그래머스 | 코딩테스트 고득점 Kit] 해시 - 전화번호 목록알고리즘/문제풀이 2026. 10. 22. 06:23
# 정렬을 활용한 O(NlgN) 풀이def solution(phone_book): phone_book.sort() for i in range(len(phone_book) - 1): if phone_book[i + 1].startswith(phone_book[i]): return False return True접두어가 존재한다면, 정렬한 뒤 두 번호는 항상 이웃하게 위치한다. # 해시 set을 활용한 O(N) 풀이def solution(phone_book): phone_set = set(phone_book) for number in phone_book: for i in range(1, len(number): if n..
-
[프로그래머스 | 코딩테스트 고득점 Kit] 해시 - 폰켓몬알고리즘/문제풀이 2026. 10. 22. 05:39
# Dictionary를 활용한 풀이from collections import defaultdictdef solution(nums): cnt = defaultdict(int) for num in nums: cnt[num] += 1 var = len(cnt.keys()) n = len(nums) // 2 return min(n, var) # Set을 활용한 풀이def solutions(nums): return min(len(nums) // 2, len(set(nums)))중복을 허용하지 않는 set() 자료형으로 한줄 구현이 가능하다 ..
-
[프로그래머스 | 코딩테스트 고득점 Kit] 해시 - 완주하지 못한 선수알고리즘/문제풀이 2026. 10. 22. 05:23
# 해시 풀이from collections import defaultdictanswer = ''cnt = defaultdict(int)for p in participant: cnt[p] += 1for c in completion: cnt[c] -= 1for k, v in cnt.items(): if v != 0: answer += kreturn answer # 스택 풀이participant.sort()completion.sort()while completion: comp = completion.pop() part = participant.pop() if comp != part: return partreturn participant.pop()문제 보..
-
[바킹독의 실전 알고리즘 | 0x02강] 기초코드 작성 요령2 복습알고리즘/바킹독 알고리즘 복습 2026. 10. 21. 01:06
1. STL과 함수 인자다음 함수의 출력값을 예측해보자void func(int a){ a = 5;}int main(void) { int t = 0; func(t); cout int를 함수 인자로 사용할 경우, 값을 복사해 사용함. 따라서, 함수에서 값을 바꾸더라도 main의 변수에는 영향을 주지 않음void func(int arr[]){ arr[0] = 10;}int main(void){ int arr[3] = {1, 2, 3}; func(arr); cout 배열 arr를 함수 인자로 사용할 경우, arr의 주소를 참조함.따라서, 함수에서 값을 바꾸면 원본의 값에도 영향을 미침struct pt{ int x, y;};void func(pt a){ a.x..
-
[바킹독의 실전 알고리즘 | 0x01강] 기초코드 작성 요령1 복습알고리즘/바킹독 알고리즘 복습 2026. 10. 21. 00:59
1. 시간복잡도란?입력의 크기와 문제를 해결하는데 걸리는 시간의 상관관계를 말한다.컴퓨터는 1초에 대략 3~5억 개의 연산 처리 가능 (연산의 종류에 따라 약간의 차이 존재)코딩 테스트 문제에서 시간제한이 1초로 주어졌다면, 연산의 횟수가 3~5억 개를 넘어가지 않도록 코드를 작성해야 함.int func1(int arr[], int n){ int cnt = 0; // cnt 변수 선언 및 0 할당 -> 연산 1회 for (int i = 0; i 연산 1회 if (arr[i] % 5 == 0) cnt++; // i가 n보다 작은지 확인, 작은 경우 1 증가 -> 연산 2n회 // 5로 나눈 나머지 계산 후, 0인지 확인 -> 연산 2n회 // 나머지..
-
-
[고전역학 | Mechanics] 13. 중력일반물리학 2023. 7. 4. 12:48
# 뉴턴의 중력 법칙 우주에 존재하는 물질의 모든 입자는 다른 모든 입자를 그 입자들의 질량의 곱에 비례하고 그들 사이의 거리의 제곱에 반비례하는 힘으로 서로 잡아당긴다. 이를 중력 법칙(law of gravitation)이라 하며 다음과 같이 표현할 수 있다. 이때 G는 중력상수(gravitational constant)라 불리는 물리상수이다. 중력은 항상 두 물체를 연결하는 선상에서 작용하며, 작용-반작용의 쌍을 이룬다. 중력상수 G값을 결정하기 위해 뒤틀림 저울을 활용할 수 있다. 뒤집힌 T자 형태의 가볍고 단단한 막대가 아주 얇은 연직의 수정섬유에 의해 매달려 있으며, 질량이 각각 m₁인 두 개의 작은 구가 T자 막대의 수평 팔 끝에 부착되어 있다. 이때 질량이 각각 m₂인 두 개의 큰 구를 접근..