일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- Python
- 딥러닝
- pop()
- null # undefined
- 정보를 담을 수 있는 그릇
- a=1
- 파이썬
- del()
- 성적 입력받기
- 리스트와 차이점
- 차집합
- 1일차
- Java Script # == # === # difference # 차이
- 변수
- false
- append()
- 변할 수 있는
- 조건문 큰 수부터 입력받아야하는 이유
- html
- 귀도 반 로섬
- 변수와 입출력
- 조지 불
- index()
- 입출력
- 부스트캠프
- 불리안
- insert()
- 그룹 # 그룹 해체 # 단축키 #figma #Figma
- input()
- 합집합
- Today
- Total
목록Algorithm (82)
I about me
문제 문제를 보고 어이가 없었다... 얘는 하의도 안 입음..?ㅋㅋ 그러나 뭐 어쩌겠는가 풀어야지...! 사실 이 문제를 보고 처음 생각이 든 것은 Permutation과 Combination이다. 그래서 해당 메소드를 사용하려고 아등바등했는데.... 아니었다... 자 그래서 천천히 오답정리 가보자! 일단 해당 문제에서 입출력 예시는 다음과 같이 나와 있다. 아오!! headgear와 face 같은 "종류"를 나타내는 것들이 2번째로 가 있는게 화가 났다... 그말 즉슨 나보고 딕셔너리로 정리하라는 뜻? 그렇다... 또 해야지 뭐,,, closet = {} for name, kind in clothes: if kind in closet.keys(): closet[kind] += [name] else: c..
def solution(spell, dic): for i in dic: if sorted(i) == sorted(spell): return 1 return 2 대박이지 않음...? 와 어쩐지 ... ~을 조합해 만들 수 있는 단어라는 문구가 참 뭔가 이용할 것 같은데 sorted였다니...ㄷㄷ 나는 막 하나씩 for문 돌면서 그걸 사용했어? 그럼 remove하고 또 다시 reset 이런 식으로 시간 초과 나올 것 같은 감성으로 코드를 짰는데... 휴우 언제 이런 생각을 파바박 할 수 있을까???
중복된 문자 제거 사고 흐름 정리 1. collections라는 라이브러리에서 Counter 메소드를 가져와 딕셔너리 형태로 숫자를 세어줌. 2. temp.keys → ' '.join()으로 묶기 ex) dict_keys(['p', 'e', 'o', 'l']) → peol 3. 최종값 return 해주기 from collections import Counter def solution(my_string): temp = Counter(list(my_string)) unique_chars = ''.join(temp.keys()) return unique_chars 최빈값 구하기 문제 사고 흐름 정리 1. collections라는 라이브러리에서 Counter 메소드를 가져와 딕셔너리 형태로 숫자를 세어줌. 2...
한 번호가 다른 번호의 접두어인 경우가 있는지 확인해보자! 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 str.startswitch(), str.endswitch() - str.startswitch(): 문자열 중 특정 문자열로 시작되는지를 확인 가능함. - str.endswitch(): 문자열 중 특정 문자열로 종료되는지를 확인 가능함. 다음의 결과값은 True나 False 형태의 불리언 자료형으로 출력됨. str ="No pain, No gain" str.startswith..
문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요. 나는 문제를 보고 뭐야 '문제 껌이네' 바로 다음과 같이 썼다.... my_string[num1] = my_string[num2] 그러나 'TypeError: 'str' object does not support item assignment'라는 error가 떴다... 찾아보니 문자열에서 인덱스로 접근해 item을 바꾸려고 하면 TypeError가 발생한다고 했다. 이 방식으로 해결하려면 문자열을 리스트로 바꿔주는 과정을 우선적으로 해야 한다고 한다. 그래서 다음과 같이 해주니 짜잔~ ..
이진탐색 데이터가 정렬돼 있는 상태에서 원하는 값을 찾아내는 알고리즘이며, 대상 데이터의 중앙값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾음. *** 정렬된 알고리즘 *** 3강. 탐색(Search) _ 이중 탐색(Bi.. : 네이버블로그 (naver.com) 3강. 탐색(Search) _ 이중 탐색(Binary search) ※ 주의 ※ 정렬된 알고리즘으로 이중 탐색을 진행한다. ex) 아래 리스트에서 14를 찾으시오. ... blog.naver.com
너비 우선 탐색(BFS) 시작 노드에서 출발해 시작 노드를 기주능로 가까운 노드를 먼저 방문하면서 탐색하는 알고리즘 부모가 나가면 자식이 들어와 기능 특징 시간 복잡도(노드 수: V, 에지 수: E) 그래프 완전 탐색 - FIFO 탐색 - Queue 자료구조 이용 O(V + E) 1. BFS를 시작할 노드를 정한 후 사용할 자료구조 초기화하기 2. 큐에서 노드를 꺼낸 후 꺼내 노드의 인접 노드를 다시 큐에 삽입하기 3. 큐 자료구조에 값이 없을 때까지 반복하기 너비 우선 탐색(BFS) 구현 방법 다음과 같은 반복하면 'A-B-C-D-E-F-G-H-J' 가 된다. 1. (초기화) traversal ← 빈 리스트, q ← 빈 큐 2. 빈 트리가 아니면, root node를 q에 추가(enqueue) 3. q..
깊이 우선 탐색(DFS) 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하는 것 기능 특징 시간 복잡도(노드 수: V, 에지 수: E) 그래프 완전 탐색 - 재귀 함수로 구현 - 스택 자료 구조(FIFO) O(V + E) 깊이 우선 탐색을 응용하여 풀 수 있는 문제는 단절점 찾기, 단결선 찾기, 사이클 찾기, 위상 정렬 - 노드 방문 여부를 체크할 배열이 필요!! - 인접 리스트 1. DFS를 시작할 노드를 정한 후 사용할 자료구조 초기화하기 2. 스택에서 노드를 꺼낸 후, 꺼낸 노드의 인접 노드를 다시 스택에 삽입하기 3, 스택 자료구조에 값이 없을 때까지 반복하기
동적 계획법의 원리와 구현 방식 1. 큰 문제를 작은 문제로 나눌 수 있어야 한다. 2. 작은 문제들이 반복되어 나타나고 사용되며 이 작은 문제들의 결과값은 항상 같아야 한다. 3. 모든 작은 문제들은 한 번만 계산해 DP 테이블에 저장하며, 추후 재사용할 때는 이 DP 테이블을 이용한다. 4. 동적 계획법은 다운 방식과 바텀-업 방식으로 구현할 수 있다. 동적 계획법의 대표 문제 D[n] = D[n-1] + D[n-2] Tip! 1. 아 여기서 여기.. 여기서 여기 ( x ) 6번째를 찾을 거야! 1, 2, 3, 4, 5번째 숫자가 이렇게 있네? 이들의 관계가 어떻길래 저렇게 나온거지? → 그렇게 하고 일반화하기!! 2. 시간 복잡도 주의