[백준] 1932 정수 삼각형 - 다이나믹 프로그래밍
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/1932 🚩 조건첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어짐맨 위층에서 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구해라아래층에 있는 수를 선택할 땐 현재 층에서 선택된 수의 왼쪽 대각선 또는 오른쪽 대각선에 있는 것만 가능함  🚩 접근각 층마다 제일 큰 수를 선택할 수 없음각각의 수에게 주어진 선택지는 왼쪽 대각선을 선택하거나, 오른쪽 대각선을 선택하거나로 같음아래층부터 살펴보며 두 선택지 중 큰 수가 있는 선택지를 고르고, 자기자신을 (자기자신+그 수)로 업데이트하자 : DP  🚩 시..
[백준] 1003 피보나치 함수 - 다이나믹 프로그래밍
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/1003  🚩 조건피보나치 수를 구하는 함수 fibonacci(N)이 주어짐fibonacci(N)을 호출했을 때 0과 1이 각각 몇 번 출력되는지 구해라 ( N은 40보다 작거나 같은 자연수 또는 0 )  🚩 접근시간제한이 0.25초인 문제 -> DP로 풀어야 할 듯 N이 주어지면 0과 1에 대해 피보나치 수를 DP로 풀듯이 식을 세울 수 있다. + 0과 1의 출력횟수를 나열해보면 아래와 같다.0의 출력횟수 : 1, 0, 1, 1, 2, 3, ... => [1]부터 0으로 시작하는 피보나치 수열1의 출력횟수 : 0, 1, 1, 1, 2, 5, ... => [0]부터 0으로 시작하는 피보나치 수열따라서 문제에서 주어진 피보나치 함수..
[백준] 1991 트리 순회 - 트리, 재귀
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/1991 🚩 조건이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어짐 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어짐 노드의 이름은 A부터 차례대로 알파벳 대문자로 매겨지며, 항상 A가 루트 노드가 됨. 자식 노드가 없는 경우에는 .으로 표현  🚩 접근트리 -> 구조체로 구현순회 -> 재귀함수로 구현  🚩 시행착오- 구조체 선언struct NODE{ char root; char lef..
[백준] 11866 요세푸스 문제0 - 연결 리스트
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/11866 🚩 조건1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어짐 순서대로 K번째 사람을 제거 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나감, 모든 사람이 제거될 때까지 반복제거되는 순서를 (N, K)-요세푸스 순열이라고 함, N과 K가 주어지면 (N, K)-요세푸스 순열을 구해라  🚩 접근1 -> 큐 또는 연결리스트로 구현하자연결리스트로 구현하기로 함  🚩 시행착오iterator을 사용하면 항상 segfault가 난다..ㅠ- iterator++, iterator-- 등은 가능하지만 iterator+2 등 숫자와 연산은 불가능하다 - list.push_ba..
[백준] 1181 단어 정렬 - 정렬
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/1181 🚩 조건알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래 조건을 맞춰 정렬길이가 짧은 것부터 정렬길이가 같으면 사전 순으로 정렬중복된 단어는 하나만 남기고 제거해야 함  🚩 접근2,3 -> pair의 vector을 만들어서 정렬하자4 -> 일단 고려하지 않고 다 정렬한 다음, 정답을 출력할 때 중복된 걸 빼자  🚩 시행착오   💻 코드 (C++)#include #include #include #include using namespace std;bool cmp(const pair& p1, const pair& p2) { if (p1.first == p2.first) { for (int i = 0; ..
[백준] 10814 나이순 정렬 - 정렬
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/10814 🚩 조건첫째 줄에 온라인 저지 회원의 수 N이 주어짐 (1 ≤ N ≤ 100,000)각 N개의 줄에 회원의 나이와 이름이 공백으로 구분되어 주어짐회원을 나이 순, 나이가 같으면 가입한 순으로 정렬하여 나이와 이름을 출력해라  🚩 접근3 -> vector>을 만들어서  sort 함수 사용하자  🚩 시행착오vector>을 sort 함수를 통해 정렬하면 가입순으로 정렬될거란 보장이 없다. 따라서 을 저장하고자 하였고, 원소가 3개이므로 tuple을 사용해야 한다.#include vector> v;// 새로운 tuple을 만드는 것은 pair와 유사함v.push_back(make_tuple(age, i, name));// t..
[백준] 5397 키로거 - 연결 리스트
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/5397 🚩 조건키로거는 사용자가 키보드를 누른 명령을 모두 기록함백스페이스 : "-" / 커서의 바로 앞에 글자가 존재한다면, 그 글자를 지움화살표 : "" / 커서의 위치를 움직일 수 있다면, 왼쪽 또는 오른쪽으로 1만큼 움직임나머지 문자는 비밀번호의 일부각 테스트 케이스에 대해 비밀번호를 출력해라  🚩 접근화살표를 통해 커서를 이동하고 그 지점에서 삽입/삭제가 이뤄져야 함 -> 연결 리스트로 구현하자.연결리스트는 구조체로 구현하거나, STL list로 구현할 수 있다.1) 구조체2) STL list ([참고] 티스토리)- 삽입push_front(element) : 리스트 맨 앞에 원소 추가push_back(element) :..
[프로그래머스] 마법의 엘리베이터 - 수학
·
💻 Algorithms/프로그래머스
[ 문제링크 ]https://school.programmers.co.kr/learn/courses/30/lessons/148653 🚩 조건-1, +1, -10, +10, -100, +100등과 같이 10의 c승(c ≥ 0 인 정수) 형태의 정수들이 적힌 버튼이 있음 마법의 엘리베이터의 버튼을 누르면 현재 층 수에 버튼에 적혀 있는 값을 더한 층으로 이동하게 됨 마법의 엘리베이터를 움직이기 위해서 버튼 한 번당 마법의 돌 한 개를 사용함0층으로 가기 위해 필요한 마법의 돌의 최소값을 구해라  🚩 접근맨 뒷자리부터 10으로 나눈 나머지값을 살펴보며 그 값이5보다 크면 -, 5보다 작으면 +를 하자5에 대한 등호는 어디에 붙여도 상관없을 것이라 생각했다.  🚩 시행착오나머지가 5일 때 고려사항이 두 가지..
[백준] 1260 DFS와 BFS - dfs, bfs
·
💻 Algorithms/백준
[ 문제링크 ]https://www.acmicpc.net/problem/1260 🚩 조건그래프를 DFS, BFS로 탐색한 결과를 각각 출력해라.방문할 수 있는 정점이 여러 개이면 정점 번호가 작은 것을 먼저 방문해야 함정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000)입력으로 주어지는 간선은 양방향  🚩 접근2 -> 입력을 모두 저장한 후 sort 함수를 이용하여 오름차순으로 정렬DFS -> stackBFS -> queue  🚩 시행착오memset(시작 포인터, 설정할 값, 크기) : cstring 헤더파일 필요ex. memset(visit, false, sizeof(visit)) 컴파일 에러 - sort 함수 사용시 algorithm 헤더파일 필요, bool을..
[프로그래머스] 뒤에 있는 큰 수 찾기 - 스택
·
💻 Algorithms/프로그래머스
[ 문제링크 ]https://school.programmers.co.kr/learn/courses/30/lessons/154539# 🚩 조건정수로 이루어진 배열 numbers배열의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 함 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return해라. 뒷 큰수 없으면 -1 담아라.  🚩 접근이걸 스택을 이용해서 풀어야 한다는 걸 떠올리기가 쉽지 않다..  🚩 시행착오처음에는 2중 for문으로 구현했다. 당연하게도 마지막 테스트케이스 4개에서 시간 초과가 발생했다. 시간 초과의 원인이 이미 살펴봤던 걸 반영을 못하고 다시 또 살펴보기 때문이라고 생각해서 배열의 뒤에서부터 봐야할 것 같다고 생각했다. ..