전체 글 125

[BOJ] #1991 트리 순회

https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 재귀함수를 활용하여 이진트리의 전위,중위,후위 순회를 출력하는 문제이다. 트리의 입력값도 사전에 다 주고, N의 개수도 최대 26까지이기 때문에 크게 까다로운 점은 없었다. 다만 이 문제에서의 핵심 포인트는 처음 루트값이 A라는 것을 활용하여 다른 자식 노드들을 따로 알파벳으로 접근하지 않고 pair형의 배열의 인덱스로서 접근, 참조하는 것인데, 처음 풀때는 이 부분이 조금 이해가 가질..

Algorithm/BOJ 2024.01.05

[자료구조] 이진탐색트리 Binary Search Tree

이진탐색트리(Binary Search Tree, BST)는 널리 사용되는 형태의 이진트리이다. BST는 다음과 같은 속성있다. 부모 노드의 값 >= 왼쪽 자식 노드의 값 부모 노드의 값 left, value); } //생성할 값이 더 작으면 왼쪽 노드로 순회하여 재귀 else { if (!current->right) current->right = new node {value, NULL, NULL}; else insert_impl(current->right, value); } //생설할 값이 더 크면 오른족 노드로 순회하여 재귀 } //노드 삽입 public: void inorder() { inorder_impl(root); } private: void inorder_impl(node* start) { i..

Data Structure 2024.01.05

240105 12:00 경제 기사 요약

- 코스피 이틀 연속 하락. 2580선 웃돌아 - 나스닥 새해들어 계속 하락, 5일째. 마지막은 2022년 10월 이후 가장 긴 하락세 - 애플, 8주 새 최저치 - 기아 EV6, 북미서 올해의 차 수상 - 국힘, 9일부터 대환대출 인프라 서비스 개시. (주담대 더 낮은 금리로 갈아탈수 있게 하는 서비스) - 유엔, 한국 경제 성장치 2.4% 예상. 전세계 평균도 2.4%. 한국은행 예상치는 2.1% - 국민연금 역대 최고 수익률 12%. 100조 넘게 수익

[BOJ] #11723 집합

https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 난이도 자체는 단순히 구현만 하면 되는 문제이기에 그리 어려운것은 없었지만, 처음에 문제 접근을 잘못 하면서 시간초과가 났고, 그로 인해 조금 헤맸다. 처음엔 단순히 vector에서 find로 인덱스를 찾고 뭐 그런 방식으로 풀었는데, 제시되는 테스트케이스가 최대 3,000,000이고, find의 시간복잡도가 O(N)이니까, 결국 O(N^2)가 된다. 시간초과가 날수밖에 없는 풀이법인 것이다. 결국 그 방법 말고 비트마스킹을 이용해..

Algorithm/BOJ 2024.01.04

[BOJ] #1302 베스트셀러

https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 한동안 서울에 방 잡고 이사한다 뭐다 해서 정신이 없었다. 백준이랑 블로그 글 올리는것도 정말 오랜만인거 같은데, 역시 ps는 꾸준히 풀어보는게 가장 좋다. 몇주 쉬고 이랬더니 감 다 죽었나보다. 이 문제는 map을 이용해서 각 단어가 얼만큼 나왔는지 개수를 세야하는 문제다. map을 이용해 푼다면 쉽게 풀리는 문제였지만, map 구조를 이용하지 않고 풀라고 하면 어떻게 풀어야하지? 모르겠..

Algorithm/BOJ 2023.12.20

[BOJ] #2346 풍선 터뜨리기

https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 덱을 활용하여 양방향에서 접근이 가능하게끔 풀어내야 하는 문제다. 이때 주의해야할 점은, 주어지는 종이에 적힌 수(코드상에서는 k라 정의함)가 양수인지 음수인지에 따라서 다르게 처리를 해주어야 한다는 점이다. 필자 또한 양수 음수에 따라 조건문으로 분기된 상황에서 반복횟수를 잘못 설정해 어려움을 겪었다. 기본적으로 양끝단 두 곳 모두 접근이 가능한 자료구조를 사용해야 하기에 덱을..

Algorithm/BOJ 2023.11.02

Deque 자료구조 예제 및 정리

Deque Queue는 선형 리스트로 선입선출(FIFO) 방식을 사용하고 시작과 끝을 가리키는 포인터로 삽입과 삭제를 한다. 이렇게 Queue는 앞으로는 삭제, 뒤로는 삽입을 할 때 사용하는데 Deque는 삽입과 삭제를 한쪽이 아닌 앞, 뒤 양쪽에서 할 수 있다. Deque의 특징 1. 크기가 가변적이다. 2. 앞과 뒤에서 삽입과 삭제가 좋다. 3. 중간에 데이터 삽입, 삭제가 용이하지 않다. 4. 구현이 쉽지 않다. 5. 랜덤 접근이 가능하다. Deque를 사용하는 경우 1. 앞과 뒤에서 삽입, 삭제를 한다. 2. 저장할 데이터 개수가 가변적이다. 3. 검색을 거의 하지 않는다. 4. 데이터 접근을 랜덤하게 하고 싶다. 아래 코드는 덱을 활용한 백준 #28279 덱2의 소스코드이다. #include #..

Data Structure 2023.11.02

Queue 자료구조 예제 및 정리

Queue queue의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미하는데 이처럼 줄을 지어 순서대로 처리되는 것이 큐라는 자료구조이다. 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 형태를 가진다. FIFO 형태는 뜻 그대로 먼저 들어온 데이터가 가장 먼저 나가는 구조이다. queue는 C++ 표준 라이브러리(Standard Template Library)에 있는 정의 되어 있어 필요할 때마다 만들어 사용하지 않고 include 하여 사용하면 편리하다. Queue의 특징 1. 먼저 들어간 자료가 먼저 나오는 구조 FIFO(First In FIrst Out) 구조 2. 큐는 한 쪽 끝은 프런트(fr..

Data Structure 2023.11.02

Stack 자료구조 예제 및 정리

Stack 자료 구조 중 하나인 stack의 사전적 정의는 '쌓다', '더미'이다. 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료 구조라고 할 수 있다. stack은 나중에 들어간 것이 먼저 나오는 (Last In First Out)의 형태를 띠는 자료구조이다. 이 방식이 stack의 가장 큰 특징이자 스택을 사용하는 이유라고 할 수 있다. stack은 C++ 표준 라이브러리(Standard Template Library)에 있는 정의되어 있어 필요할 때마다 만들어 사용하지 않고 include 하여 사용하면 편리하다. Stack의 특징 1. 먼저 들어간 자료가 나중에 나옴 LIFO(Last In First Out) 구조 2. 시스템 해킹에서 버퍼오버플로우 취약점을 이용한 공격을 할 때 스택 메모리의 영..

Data Structure 2023.11.02
728x90