Typidoyun

[C++ / Design Pattern] 디자인 패턴이란? #1

1. 디자인 패턴이란? 디자인 패턴은 소프트웨어 디자인 과정에서 발생하는 문제들을 해결하기 위한 방법들을 모아서 부르는 말입니다. 디자인 패턴을 사용하면 불필요한 코드 또는 복잡한 코드를 없애거나 줄일 수 있습니다. 디자인 패턴을 알고리즘과 자주 혼동하지만 알고리즘은 문제 해결을 위한 순차적 절차라면 디자인 패턴은 코드의 구조와 작성을 더 효율적으로...

[C++ / Algorithm] 백준 28127번 숫자탑과 쿼리 #22

1. 트리 1-1. 문제 의찬이는 숫자가 적힌 블록으로 탑 쌓기를 즐긴다. 어느 날 선우는 의찬이가 쌓는 탑에 규칙이 있음을 알게 되었다! 선우가 알아낸 규칙은 다음과 같다. 의찬이가 쌓는 탑은 꼭대기가 1층이고, 1층에는 a개의 블록이 존재한다. 1층의 가장 왼쪽 블록에는 1이 적혀있으며, 블록에 적힌 숫자는 오른쪽으로 갈수록 1씩 증...

[C++ / Algorithm] 백준 13306번 트리 #21

1. 트리 1-1. 문제 트리 T는 아래 그림 1과 같은 구조를 가지고 있으며 원은 ‘정점’이라 하고, 정점과 정점을 연결하는 선을 ‘에지’라 한다. 특히 가장 위에 위치한 정점을 ‘루트’라 하는데 오직 하나만 있다. N개의 정점들은 숫자 1부터 N으로 표현하고 루트는 항상 1이다. 두 정점 v와 w를 연결하는 경로는 정점들의 순서리스트 (v0,...

[C++ / Algorithm] 백준 1541번 잃어버린 괄호 #19

1. 잃어버린 괄호 1-1. 문제 세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다. 그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다. 괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오. 1-2. 입력 첫째 줄에 식이 주어진다. 식은 ‘0’~...

[C++ / Algorithm] 브루트 포스란? #18

1. 브루트포스란? 브루트포스 알고리즘은 brute(무식한)과 force(힘)의 합성어로 뜻 그대로 무식하게 모든 경우의 수를 다 확인하는 알고리즘이다. 브루트포스는 해가 존재할 것으로 예상되는 모든 영역을 전부 탐색하는 방법이므로 시간 복잡도가 높은 편에 속합니다. 2. 약수 구하기 브루트 포스 알고리즘을 이용해서 약수를 구할 수 있습니다. ...

[C++ / Algorithm] 이진 탐색이란? #17

1. 이진 탐색이란? 이진 탐색은 정렬된 데이터들 중 특정한 데이터를 빠르게 찾아낼 수 있는 알고리즘입니다. 이진 탐색을 하기 위해선 무조건 데이터가 정렬되어 있어야 한다는 조건이 있습니다. 2. 이진 탐색의 원리 오름차순으로 정렬된 데이터는 특정 데이터를 기준으로 그 데이터보다 값이 큰 데이터는 오른쪽에 있고, 작은 데이터는 왼쪽에 있을 것...