전체 글 170

[자료구조] 트리(Tree) - python

트리란 ? 비선형 자료구조로, 원소들간에 1:n 관계, 계층 관계를 가진다. 상위 원소에서 하위 원소로 확장되는 구조를 갖고 있다. 트리의 구성요소 1. 노드(node) : 트리의 원소 2. 루트(root) : 트리의 시작 노드 3. 간선(edge) : 노드를 연결하는 선 / 부모 노드와 자식 노드를 연결한다. 4. 차수(degree) : 노드에 연결된 자식 노드의 수 5. 높이 (1) 노드의 높이 : 루트에서 마지막 노드에 이르는 간선의 수 / 노드의 레벨 -> B의 높이는 1 / F의 높이는 2 (2) 트리의 높이 : 트리에 있는 노드의 높이 중 가장 큰 값 / 최대 레벨 -> 트리의 높이 : 3 이진 트리 1. 이진 트리 모든 노드가 2개의 서브 트리를 가지고 있는 트리 자식 노드 개수를 최대 2개..

자료구조 2023.02.26

현대오토에버 코테 후기

올해 첫코테 !!!!!!!! 2023.02.18 오후 1시 30분에 현대오토에버 코테를 봤다. 총 3문제가 나왔는데 sql은 안나왔음 ! 난 파이썬으로 골라서 봤다 코테보면서 공식문서 열어볼 수 있는거 처음 알았다. 공식문서 보기 버튼이 있길래 눌러봤다가 헐 누르면 안되는거 아닌가? 식겁하고 문의창에 바로 물어봤는데 봐도 된다고 하셨다. 정말 다행. 이래서 교수님이 맨날 공식문서 자주 보라고 하셨나보다. 생전 안보던 사람이 본다고 큰 변화는 없었다 . ㅋㅋ 1 번 문제는 파이썬 문자열 좀 할 줄 알면 후다닥 푸는? 쉬운 문제였다. 2 번도 단순 조건문 계산 문제라 쉬웠다 알고리즘은 쓸 필요도 없었음 근데 3번이 내가 너무 피곤한 상태로 봐서 그런가.. 조건도 기억안나고 못풀었음 ! 구간합 같긴 한데 조건..

공부일지 2023.02.20

[SWEA] 4881 배열 최소 합 - python

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIc7KqfQDFAWg SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com N*N 배열에서 세로 안겹치고 뽑기 1~N까지 순열을 생성한 후, 그 순열에 해당하는 열을 배열에서 각각 뽑으면 된다 ! 1. 순열 생성 함수 만들기 2. 생성된 순열과 배열 매칭해서 더하기 3. 더해진 값에서 최소값 찾기 방법으로 코드를 짯는데, 시간초과가 계속 났ㄷㅏ.. 처음짠 코드 ( 시간초과 ) def f(i, k): total = 0 if i == k..

SWEA 2023.02.20

[SWEA] 4875 미로(백트래킹) - python

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIc7KqfQDFAWg SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 출발지점, 도착지점 찾기 2. stack에 현재 좌표 넣기 3. 스택에서 현재 좌표 pop 4. 주변에 갈 수 있는 곳 찾기 5. 갈 수 있으면 stack에 추가 후, 방문 표시 6. 갈 수 없으면 pass -> 다시 처음으로 돌아가 마지막으로 방문한 좌표 스택에서 꺼내고, 갈 수 있는곳 찾기 반복 7. 반복문이 끝난 후 목표 지점에 방문했는지 안했는지 ..

SWEA 2023.02.19

[SWEA] 4874 Forth - python

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIc7KqfQDFAWg SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 숫자면 stack에 넣고 2. 연산자면 stack에서 숫자 2개 pop 3. 연산 후 다시 스택에 넣기 4. stack에 남은 수 출력 -> 이때 stack에 남은 수가 1인지 검사해야함!!! 이거 안해서 계속 틀렷음 T = int(input()) for test_case in range(1, T+1): op = {'*': 2, '/': 2, '+': 1..

SWEA 2023.02.19

[SWEA] 4873 반복 문자 지우기 -python

SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 대표적인 stack 문제유형 222 중복 문자 지우기 우선 스택에 하나씩 담으면서 중복이 발생하면 pop하기 ! T = int(input()) for test_case in range(1,T+1): txt = list(input()) stack = [] for i in txt: # 스택이 비었으면 push if len(stack) == 0: stack.append(i) # 스택에 뭐가 있으면 else: # 스택의 맨 마지막 문자가 i와 같으면 pop if i == stack[-1]: stack.pop() else: stack.app..

SWEA 2023.02.18

[SWEA] 4866 괄호검사 - python

SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com stack의 대표적인 유형 괄호문제 pop하기 전에 항상 미리 stack이 있는지 체크해야하는데 까먹어서 자꾸 틀렸던 !!! while문을 돌려서 ans != 0 이 되는 시점에서 반복문을 멈춰도 될 것 같다 T = int(input()) for test_case in range(1, T+1): txt = list(input()) stack = [] ans = 0 for i in txt: # (나 {가 들어오면 stack에 넣기 if i == '(' or i == '{': stack.append(i) # )가 들어오고 스택의 마지막..

SWEA 2023.02.18

여카추 ( 여기 카테고리 추가요 )

끝도 없이 증가하는 나의 블로그 카테고리 . . 오늘 처음으로 DP, DFS를 접했는데 어떻게든 복습하려고 블로그에 정리를 했다. 근데 어느 카테고리에 넣을지 모르겠는 것임. ( 당연함 알고리즘 이론 카테고리가 없음) 그래서 걍 새로 추가했다 ㅎ !!! 하루 동안 DP / DFS를 배우고 느낀 점 : 정말 큰일났다 억덕헤억덕헤 하고 있었더니 남친이 억덕헤가 아니고 그냥 아무 생각하지말고 하란다. 맨날 맞는 말만해서 때리고 싶다. 오늘으 일기 끝

공부일지 2023.02.14

[SWEA] 4871 그래프 경로 -python

SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나에게 그래프가 뭔지 알려준 문제. . 이론도 쉽지 않았음 ( 하루 종일 그림 그린 사람 ) 대표적인 DFS 문제다 이 코드 그냥 통으로 외워야함 !!! def f1(start, goal, end): # start 시작 / goal 도착 / end 마지막 정점 visited = [0]*(end + 1) stack = [] v = start # 현재 위치 while True: if v == goal: # 현재 위치 = 목표 goal에 도달하면 return 1 # 성공 visited[v] = 1 for w in range(1, end+..

SWEA 2023.02.14

DFS(Depth First Search) 깊이 우선 탐색 - python

DFS(Depth First Search) 깊이 우선 탐색 그래프로 표현된 모든 자료를 빠짐없이 탐색하는 알고리즘 stack과 재귀를 이용하여 구현 DFS 진행 과정 1. 시작 정점 v를 결정하여 방문 2. 정점 v에 인접한 정점 중에서 ( 1 ) 방문하지 않은 정점 w가 있으면, 정점 v를 스택에 push -> 정점 w에 방문 v = w로 바꾸고 다시 반복 ( 2 ) 방문하지 않은 정점이 X -> 탐색의 방향을 바꾸기 위해 스택을 pop -> 가장 마지막에 방문한 정점을 다시 v로 바꾸고 반복 v = stack.pop() 3. 스택이 공백이 될 때까지 2를 반복 DFS 예시 좌표 A B C D E F G visited F F F F F F F stack 1. A 출발 좌표 A B C D E F G vi..

알고리즘 2023.02.14