
🌵 Hash Function (해시 함수) 또는 Hash Algorithm (해시 알고리즘) 임의의 길이의 데이터(key)를 고정된 길이의 데이터(hash)로 매핑하는 함수 이 과정을 hashing이라 한다. 즉, 해시 함수 : key (Input) -> Hash (Output) 이때의 Hash는 저장 위치가 된다. 🌵 Hash Table (해시 테이블) 또는 Hash Map (해시 맵) 해시값을 주소 또는 색인 삼아 데이터(value)를 key와 함께 저장하는 자료구조이다. 파이썬의 딕셔너리(dictionary) 자료형은 해시 테이블로 구현되어 있다. 장점 해시 테이블은 key-value가 1:1로 매핑되어 있기 때문에 삽입, 삭제, 검색의 과정에서 모두 평균적으로 O(1)의 시간 복잡도를 가지고 있다..

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 👩💻문제 이해 처음 문제를 풀 때 '666'에 0부터 1씩 커지면서 수를 합치면 풀릴꺼라 생각하고, # prevnum = 666 # cnt = 1 # i = 1부터 더해지고, # while cnt = int(input()) # int('666' + 'i') > int('i' + '666') and int('i' + '666') > prevnum => nextnum = int('i' + '666..

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 👩💻문제 이해 1. 모든 사람들간의 비교를 하는데 몸무게는 몸무게 끼리, 키는 키끼리 비교 2. 둘 다 큰 사람이 더 큰 덩치를 가지는 것이다. 👩💻dictionary형태와 반복문 사용 : 성공🌈 dic = {} li = [] for i in range(int(input())): kg, cm = input().split() li.append([int(kg), int(cm)]) di..

https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 👩💻문제 이해 N의 생성자는 N보다는 작지만 N+(각 자리 수의 합) 이므로 0부터 하나씩 확인 하는 것보다 N부터 1씩 줄어들며 확인하는 것이 나을 것이라 생각했다. 👩💻reversed(N)을 범위로 하는 반복문 사용 : 성공🌈 n = int(input()) res = [] for i in reversed(range(n)): sum = 0 sum += i for ..

https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 👩💻문제 이해 반복문을 이용해 나올 수 있는 숫자카드의 합의 경우 중 M을 넘지 않으면서 가장 근접한 3장의 카드의 합을 구한다. 👩💻반복문 사용 : 성공🌈 import sys n, m = map(int, input().split()) res = sys.stdin.readline().split() sum = 0 min = 0 for i in range(0, n-..

🌵 브루트포스 알고리즘(Brute Force Search)이란? brute : 무식한 + force : 힘 brute force : 폭력 완전 탐색, 전체 탐색 알고리즘으로 불리며, 발생할 수 있는 모든 경우를 탐색한다. 쉽게 말해 4자리 비밀번호를 맞추기 위해 브루트포스 알고리즘을 사용하면, 0000부터 9999까지의 모든 숫자조합을 시도해 비밀번호를 찾는 것이다. 🌵 장점 EASY - 알고리즘을 설계, 구현하기가 매우 쉽다. 정답률 100% - 해가 하나 이상 존재한다는 가정을 세우고 구현하므로, 100%의 확률로 정답을 찾을 수 있다. 🌵 단점 시간 초과 가능성 - 모든 경우를 탐색하므로 실행시간이 오래걸린다. 비효율적 - 메모리 효율측면에서 비효율적이다. 🌵 종류 브루트포스의 종류는 크게 두 가지..