본문 바로가기

C++16

[코딩테스트/ 백준 알고리즘] BOJ.2798 : 블랙잭 (C++ 풀이) 문제 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 풀이 자료구조 - int cardnum : 카드 수 - int card[] : 카드 - int num : 입력 - int sum : 카드 세개의 합 - int max : sum의 최대 알고리즘 - 브루트포스 설명 가능한 모든 경우의 수를 탐색하는 것이 중요하다. 나는 3중 for문을 사용하여 모든 경우의 수를 고려했다. ex) 카드의 수가 5면 (1,2,3),.. 2022. 1. 30.
[백준 알고리즘/ C++] BOJ.10828 스택 문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 자료구조 - int stack[] : 스택을 구현하기 위한 배열 - int top : top의 역할을 하는 변수 - int data : 입력 값 - int num : 테스트 입력 수를 저장하는 변수 - int count : 실행횟수 세기 위한 변수 알고리즘 - 스택 - 자료구조 코드 - C++은 string이라는 문자열을 처리하기에 유리한 변수가 있기 때문에 사용 - .. 2022. 1. 30.
[자료구조/C++] 스택(Stack) 스택이란? 인터넷을 돌아다니다 보면 "업보 스택 쌓는다"라는 말을 들을 수 있을 것이다. 무언가 잘못을 해서 업보를 차곡차곡 쌓는다는 뜻인데, 나중에 이를 그대로 돌려받을 때 "업보 청산" 한다고 한다. 여기서 스택의 뜻을 대충 유추할 수 있는데, 스택은 업보와 같이 동일한 구조의 데이터를 차곡차곡 쌓는 것을 말한다. 스택의 특징 스택의 대표적인 특징으로는 "가장 마지막에 삽입된 데이터가 가장 먼저 삭제"되는 후입선출(LIFO:Last-In-First-Out)의 구조를 가진다는 것이다. 이러한 특징 때문에 스택에서는 가장 나중에 들어간 데이터 만을 조작할 수 있는데, 여기서 가장 위에 위치한 데이터를 top이라고 한다. 스택에서 삽입과 삭제는 모두 top을 통해서만 가능하다. 스택의 기능 스택에는 데이터.. 2022. 1. 25.
[코딩테스트/ 백준 알고리즘] BOJ.1463 : 1로 만들기(탑다운) (C++ 풀이) 문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 풀이 자료구조 - int input : 입력 - int dp[] : dp 테이블 알고리즘 - 다이나믹 프로그래밍 - 재귀 사용한 탑다운 방식 - 점화식 : dp[i] = min(DP(i / 2), DP(i / 3), DP(i - 1)) + 1 코드 #include #include using namespace std; int dp[1000001] = {0}; int DP(int input) { //중복 계산 방지 if(dp[input] != 0) { return dp[input]; } else { if(in.. 2022. 1. 18.