728x90
반응형

Problem Solving/SW Expert Academy 6

[SWEA] 3000. 중간값 구하기

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV-fO0s6ARoDFAXT SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 과정 MIN HEAP과 MAX HEAP을 각각 두어서 MAX HEAP의 TOP이 항상 MIN HEAP의 top에 있는 값보다 작은 값이 되도록 유지시키면 MAX HEAP의 top이 중간값이 될 것이다. 다음은 문제에 나온 예시를 시각화한 것이다. MAX HEAP의 top (초록색)은 항상 중간값을 나타낸다. priority queue를 이용해서 MAX Heap과 MIN Heap 구현 N개의 중..

[SWEA] 1251 하나로

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15StKqAQkCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 과정 최소 신장 트리를 구현해야 겠다. 프림 알고리즘 크루스칼 알고리즘 Boruvka 알고리즘 E = V^2인 그래프 프림 알고리즘 -> 최소 비용을 완전 탐색을 사용하여 O(V) 찾기 -> O(V^2) 크루스칼 알고리즘 -> 간선 정렬이 필요하기 때문에 O(V^2logV^2) = O(V^2logV) Boruvka 알고리즘-> O(V^2logV) 프림 알고리즘으로 선택 풀이 코드 #includ..

[SWEA] 1248 공통조상 (c++)

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15PTkqAPYCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 과정 문제에서 나온 것처럼 이진트리를 구현하는게 먼저라고 생각했습니다. 공통 조상을 찾기위해서 하나를 root노드까지 쭉 검사해서 그 경로를 비교하는 것이 아니라, 각각 번갈아 가면서 parent를 조사하고 조사된 노드들을 표시해놓습니다. 다른 노드가 검사했을 때, 이미 조사되었다고 나온다면 그것이 가장 가까운 공통 조상이 됩니다. 이렇게 하면 root까지 조사할 필요가 없습니다. 이진 트리이..

[SWEA] 1232 사칙연산(c++)

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV141J8KAIcCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 과정 예시에서 나온 트리가 (9/(6-4))*3를 나타내는 것을 보고 post-order 방식으로 구현되어 있는 트리임을 알았습니다. 루트에서 부터 left, right 순서대로 계속 탐색을 해서 가장 아래에 있는 노드에 도달하고, 노드가 그냥 상수라면 다시 부모노드로가서 해당하는 연산자에 맞게 계산하는 방식으로 재귀적으로 구현해야 겠다고 생각했습니다. 풀이 코드 #include #includ..

[SWEA] 1233 사칙연산 유효성 검사 (C++)

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV141176AIwCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 접근 이진 트리에서 부모 노드에는 항상 연산자 기호가 있어야 하고, 리프 노드에는 항상 양의 정수가 있어야지 계산이 가능하다고 판단할 수 있습니다. 인덱스가 1부터 시작한다고 하였을 때, 리프 노드는 (전체 노드의 수 / 2)의 내림값 보다 큰 인덱스에 위치하는 노드들이고, non-leaf 노드들은 1부터 (전체 노드의 수 / 2)의 내림값까지의 인덱스에 해당하는 노드들이라는 것을 이용하여 문..

[SWEA] 1230 암호문3 (C++)

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14zIwqAHwCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 리스트와 벡터의 차이점 C++에서 리스트는 원소의 인덱스로 직접 접근이 불가능하여 특정 원소에 접근하기 위해서 처음이나 끝부터 선형 탐색을 해야합니다. 벡터의 경우에는 개별 원소들로 접근이 가능합니다. 출처: https://chanheess.tistory.com/154 vector와 list의 차이점 vector 연속적인 메모리. 미래에 들어갈 요소를 위해 선할당을 한다 각 요소는 요소 타입 그자체..

728x90
반응형