일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 안드로이드
- django
- 파이썬
- 코드품앗이
- C++
- DFS
- 안드로이드스튜디오
- DART
- 개발
- Python
- android
- cos pro 1급
- AndroidStudio
- 알고리즘
- Algorithm
- cos pro
- BAEKJOON
- 분할정복
- 코테
- codingtest
- issue
- Vue
- Flutter
- 백준
- cos
- DFS와BFS
- 코딩테스트
- 동적계획법과최단거리역추적
- 동적계획법
- vuejs
- Today
- Total
목록Algorithm (123)
Development Artist
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0LE17/btruAsVePZd/vmo3MfqVfEZsWRNKkv8eW0/img.png)
문제 유형 코딩 난이도 normal Note 1. combination(조합) 으로 해결. 2. for문을 돌면서 min과 max를 구해서 빼고 결과를 answer에 업데이트. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean import itertools def solution(arr, K): answer = 10001 list_a = list(itertools.combinations(arr, K)) for nums in list_a: list_nums = list(set(nums)) max_n, min_n = max(list_nums), min(list_nums) rtn = max_n - min_n if rtn < answer: answ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bCNxWQ/btruoK9F2IQ/dkLs5tcMtl8w4x3XTRS3mk/img.png)
문제 유형 코딩 난이도 normal Note 1. 임계값 K를 업데이트 하면서 필요한 라인 계산. 2. 띄워쓰기 때문에 is_first로 첫 라인의 첫 단어는 띄워쓰기를 빼는 것으로 계산. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean def solution(K, words): answer = 1 rest_len = K is_first = True for word in words: if is_first: length = len(word) else: length = len(word) + 1 if 0
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Rdt9t/btruFeICXBh/e85yLkCPr7Ntve4qYzBuvk/img.png)
문제 유형 코딩 난이도 normal Note 1. bfs 문제. 백준의 토마토 문제와 유사(?같음.). 2. bfs 문제를 많이 풀어보면, 익숙하다. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean # bfs, 백준 토마토 문제 from collections import deque dx=[-1,0,1,0] # 좌 우 dy=[0,1,0,-1] # 상 하 queue = deque() def bfs(n, garden): while queue: x,y = queue.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/U4ESG/btruFf8G0Xy/ZyeKKv8QO8M5keo9MwNpnK/img.png)
문제 유형 빈칸 난이도 easy Note 1. 파이썬의 Class, def, self. Code class Job: def __init__(self): self.salary = 0 def get_salary(self): return salary class PartTimeJob(Job): def __init__(self, work_hour, pay_per_hour): super().__init__() self.work_hour = work_hour self.pay_per_hour = pay_per_hour def get_salary(self): self.salary = self.work_hour * self.pay_per_hour if self.work_hour >= 40: self.salary += (s..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Ln0zV/btruAr9Rysh/PqG8c4YIZP7sVnLwwkv4z1/img.png)
문제 유형 코딩 난이도 hard Note 1. DP 문제. 2*N 타일링 문제. = number) else dp[i-1]+1 if dp[i+1] != -1: min_num = min(min_num, dp[i+1]+1) if dp[i] != -1: min_num = min(min_num, dp[i]) dp[i] = min_num dp[i*2] = min_num+1 print(dp) return dp[target] number1 = 5 target1 = 9 ret1 = solution(number1, target1) print("solution 함수의 반환 값은", ret1, "입니다.") number2 = 3 target2 = 11 ret2 = solution(number2, target2) print("..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AAzif/btruE816dSR/xDbP11i8pPJPYcFr26RVC1/img.png)
문제 유형 빈칸 난이도 easy Note 1. func_a : 최대 공약수 구하는 함수. 2. func_b : func_c를 돌리면서 count 하는 함수. 3. func_c : 약수 구하는 함수. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean def func_a(a, b): mod = a % b while mod > 0: a = b b = mod mod = a % b return b def func_b(n): answer = 0 for i in range(1, n+1): if func_c(n, i): answer += 1 return answer def func_c(p, q): if p % q == 0: return True else:..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/biZlA7/btruyNk1Rkr/AxkwrbVBXIW0icKXlNFn5k/img.png)
문제 유형 빈칸 난이도 normal Note 1. 크루스칼 알고리즘 문제. 크루스칼 알고리즘에 대해 공부하면 매우 쉬움. find, merge 함수 이름보고 크루스칼인가? 하고 유추했다. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean def find(parent, u): if u == parent[u]: return u parent[u] = find(parent, parent[u]) # recursive, 루트노드 찾기 return parent[u] def merge(parent, u, v): u = find(parent, u) v = find(parent, v) if u == v: return True parent[u] = v # pa..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b4Kdcv/btruwIXe1Jh/8mj5Y05MLePwtRKX7RwlX1/img.png)
문제 유형 코딩 난이도 normal Note 1. convert 함수 매우 중요. 완벽한 숙지 필요. num : 숫자, base : 진법 2. string.digits+string.ascii_lowercase = 0123456789abcdefghijklmnopqrstuvwxyz 3. 그리고 파이썬은 int('str',2) 이면 str을 2진법으로 변환, int('str',3)이면 3진법으로 변환 할 수 있다. 다만, 최대한계(?)가 있는 것으로 보인다. int('100',2)는 되고 int('160',2)는 안되고...(코테 하다가 당황.) Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean import string tmp = string.d..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bGITBK/btruAr9Qf8V/j8GJZeGGxtGhCRgrDqxQmK/img.png)
문제 유형 코딩 난이도 hard Note 1. '가능 강력한 아군이 이길 수 있는 적군의 수가 최대로 이길 수 있는 적군의 수'라는 것을 아는 것이 매우 중요. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean def solution(enemies, armies): answer = 0 enemies.sort(reverse=True) armies.sort(reverse=True) for i in armies: n = 0 for j in enemies: if i >= j: n += 1 answer = max(n, answer) return answer enemies1 = [1, 4, 3] armies1 = [1, 3] ret1 = solutio..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/diuVW6/btruIUbxhHu/k34iFS6piKLZcNe9mb2VcK/img.png)
문제 유형 한줄 수정(디버깅) 난이도 easy Note 1. 문제 자체는 쉬웠다. 2. 하지만, 함수 구현 문제로 나올 수 있으니, 해당 로직은 알 필요가 있다. 3. while문 : 숫자를 자릿 수를 쪼개가면서 10으로 나눈 나머지 (0~9)를 number_count의 인덱스에 1씩 더해감. 흡사 collections 모듈의 Counter. 숫자라서 인덱스로 가능. 문자라면, Counter 적극 활용. 4. for문 : 출력. Code # -*- coding: utf-8 -*- # UTF-8 encoding when using korean def solution(number): answer = '' number_count = [0 for _ in range(10)] while number > 0: nu..