전체 글

하루하루 배워가는 코딩에 대하여 내가 배우는 것 들을 정리하여 보자
오늘은 문제를 먼저 풀이를 다해서 문제 풀이 부터 적도록 하겠습니다 가장 먼 노드 처음에 문제를 잘못 이해 하여서 최단거리계산 중에서 가장거리가 긴 노드의 거리인 줄 알고 계산을 했는데 그게 아니라 가장거리가 긴 노드의 갯수는 몇개 인가 였습니다… return distance.count(max(distance)) 그래서 카운트를 써서 리스트 중에서 맥스 값과 같은 수가 몇개가 있는지 출력해주면 됩니다! # Code from collections import deque def solution(n, edge): # 그래프 생성 graph = [[] for _ in range(n+1)] # 노드거리 distance = [0 for _ in range(n+1)] # 그래프 엮기 for i in edge: gra..
튜터님 강의 다 기억해두자고 트리란 무엇인가?? 1대 n의 관계를 가지고 있어야 한다. 순서가 없음. 부모와 자식 관계가 있다. 서브 트리 = 트리중에서 다시 루트를 잡아서 보는 방법 리프 노드 = 자식이 없는 노드 자손 노드 = 자신 밑에 있는 모든 자식 노드 완전 이진트리 = 1,2,3,4,5 노드가 순서대로 있을 때 그냥 이진트리는 1,2,5,6,7이라도 상관없다. 트리 순회 방법 전위 순회 위에서 부터 아래로 중위 순회 제일 좌 또는 우측 부터 진행 후위 순회 최하위 부터 최상위 까지 이진 탐색 트리 왼쪽은 부모보다 작은 값 오른 쪽은 부모보다 큰 값 여기서 중위 순회를 하면 내림차순 오름차순이 된다. 힙(heap) 키값이 큰 노드나 작은 노드를 찾는 법 키값에 중복이 있으면 안됨! heap이 아..
오늘도 튜터님의 강의로 하루를 시작해 봅시다! Queue를 이용한 너비우선 탐색 BFS from collections import deque 큐를 사용하기 위해서 import 해주어야 하는 순열을 구하는 방법을 재귀가 아닌 큐를 이용해서도 만들어 줄 수 있다 이때 맨처음에 1,2,3,4를 큐에 넣어주고 만들어지는 조합마다 다시 큐에 마지막에 넣어준다는 개념으로 접근을 할 수 있다. BFS 미로탐색 풀이 이 개념을 정확하게 이해하게 되었습니다. bfs를 위해서는 큐를 주로 사용하고 dfs를 위해서는 재귀를 주로 이용한다는 말이 이제는 이해가 되더라고요...ㅎㅎ BFS의 장점 최단경로 찾기가 가능하다! 전염이 되는 경우! DFS와 달리 제일 먼저 얻어진 해가 최단경로가 된다! 가는 길이 한 가지 방법이 아닐..
어제 다 풀지 못했던 문제를 마저 풀었습니다.. 피보나치 1 코드가 기본적으로 주어지 때문에 파이썬 방식으로 기입을 하고 카운터를 넣어주면 됩니다. 다만 python3으로 실행하면 시간 초과가 되므로 pypy3로 작동을 해야 하더군요 count1 = 0 count2 = 0 def fib(num): global count1 if num == 1 or num == 2: count1 += 1 return 1 # 코드1 else: return fib(num - 1) + fib(num - 2) def fibonacci(num): global count2 f = [0] * (num + 1) f[1] = f[2] = 1 for i in range(3, num + 1): count2 += 1 f[i] = f[i - 1..
오늘도 알고리즘의 한 주가 시작 되었습니다! 튜터님의 강의 스택 2 탐색 알고리즘에 유망한지 아닌지를 따녀야 한다. 기본적인 예시! 의사결정 공간 트리, 상태 공간 트리 백트레킹에 개념중에 중요한 부분 이거 아주 중요합니다.. 이 순서를 잘 몰라서 자꾸 틀렸어,,, DFS, BFS 깊이 우선 탐색, 넓이 우선 탐색 드라마 한 방에 몰아보기 : DFS 드라마 하나 씩 나올 때 마다 보기 : BFS DFS(Depth First Search) 깊이우선탐색 DFS는 스택을 이용하기 때문에 stack을 이용해서 만든다.!!! BFS 이 친구는 큐를 이용해서 풀이! 햄버거 다이어트 처럼 재료를 골라야 할 때 재료는 모두 고르는 것이 좋은 것이 아니라 재료의 조합에 따라 값이 다른 경우를 비교 할 때!! 이걸 더 짧..
이번주는 알고리즘 문제를 풀이를 하는 주간이 였습니다. 처음에는 아무것도 몰랐다.... 정말로 초기에 주어지는 알고리즘의 문제를 풀었을 때에는 어.. 시간 만 조금 들여서 생각만 하면 풀수 있는 문제겠는데?? 라는 생각이 들었습니다.. 그러나 완전 탐색, 그리디, 재귀함수, 이진 탐색, 백트래킹 여러가지의 문제가 나오면서... 똑같은 알고리즘 문제를 풀면서 이렇게 다양한 풀이 방법이 있구나 라는 것을 알게 되어서 좋은 점도 있지만.. 문제를 풀면서 막히게 될 때 풀이 방법을 찾아가는 것이 너무나도 고역이였습니다,ㅜ ㅜ 튜터님에 알려주면 내것이 되지 않기에 직접 풀어야 한다는 마음은 알지만 이제 코딩에 걸음마를 때는 나에게 절벽밑으로 밀어버리는 문제 난이도에 아주... ㅋㅋㅋㅋㅋㅋㅋㅋ (튜터에몽 너무해) ..
튜터님 수업 데이터 타입 데이터 타입은 효율이다! 트리구조! 트리구조는 상하관계가 있다! 그래프는 서로가 서로를 이어주고 있다! 소셜망같은 느낌 오늘의 메인 디쉬! 자료를 배울 때에는 구조와 연산이 중요하다!!! 맨위를 탑! 탑을 꺼낼 때에는 pop 밀어넣기 뒤로가기가 스택에 가장 기본적인 예시! 스택의 연산방법! 백트래킹!! 한정조건을 걸어준다! 가지치기를 한다! 오늘도 즐거운 문제 풀이시간! 와 오늘은 정말로 맵다! 괄호 # Code import sys # 표준 입력을 파일로 설정 sys.stdin = open("input.txt", "r") # 테스트 숫자 입력 test = int(input()) # 테스트 숫자 만큼 반복 for _ in range(test): # 입력 값을 단어마다 나누어서 리스..
튜터님 강의 SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 여기서 문제 풀이도 해보자. 문제 1 import sys #표준입력을 파일로 설정 sys.stdin = open("input.txt","r") def list_odd(x): global found_text for line in x: for index in range(len(line) - n + 1): if line[index:index + share] == line[index + share: index + (share * 2)][::-1]: found_text += 1 def list_even(x): global fou..
정렬 프로그램 상에서 정렬은 어떻게 진행이 되는 것인가?? 재대로 알아보자. 버블정렬 리스트에서 두개씩 비교해가면서 점점 오른쪽 부터 맞추어 나가는 방식 https://www.daleseo.com/sort-bubble/ [알고리즘] 거품 정렬 - Bubble Sort (Python, Java) Engineering Blog by Dale Seo www.daleseo.com # 버블정렬을 만들어 보자! def bubble_sort(array): # 비교를 해야 하는데 처음에는 8자리까지 그다음은 7자리......마지막은 0자리로 끝이 나게 for i in range(len(array) - 1,0,-1): # 8,7,6,5,4,3,2,1순으로 들어간다. for j in range(i): if array[j]..
튜터님 강의 완전 탐색 map함수 map(함수, 리스트) 받은 리스트에게 모두 함수를 적용시키고 싶을때! 그냥 하면 함수명으로 나옴 그래서 리스트로 만들어 주어야함 아니면 이렇게도 가능합니다. for i, num in enumerate(input_list, 1): 1씩 증가 하는 i값이 같이 반복문에 들어간다. (input_list, 1)의 1은 시작 값이 1로 설정 이분탐색 경우의 수를 절반씩 줄여가면서 만들어야 하는 경우 너무 많아서 선형식으로 계산하게 되면 시간 초과가 되어버리는 경우에는 이분탐색으로 하는 것이 유용하다. 이렇게 계산 하는 방법의 시간은 log₂n으로 줄어들게 된다! 이분탐색은 정렬이 되어있다는 가정하에 사용이 가능합니다! key이용하기 lambda 사용하기 람다는 일회용 함수! 강..
HyunjunPark
박현준의 코딩 교육