전체 글

전체 글

    [백준 / BOJ] C++ 2096 내려가기

    [백준 / BOJ] C++ 2096 내려가기

    https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 풀이 사실 한번 살펴보면 간단한 문제이다. dp 문제들에 익숙해지면 조건식을 바로 알아챌 수 있다. 1. 별표 문양이 왼쪽에 있을 경우 dp[i][0] = arr[i][0] + max(dp[i - 1][0], dp[i - 1][1]); 2. 별표 문양이 중앙에 있을 경우 dp[i][1] = arr[i][1] + max(max(dp[i - 1][0], dp[i - 1][1]), dp[i - 1][2]); 3. 별..

    [Tensorflow / Deep learning] 레모네이드 판매 예측

    [Tensorflow / Deep learning] 레모네이드 판매 예측

    요즈음 딥러닝이 정말 '핫' 하다. 회사에서도 딥러닝 기반 기능 개발이 되어가고 있고, 뉴스에서도 심심찮게 나온다. 재작년에 조금 공부하고 손 놨었는데, 다시 하나씩 공부해보려고 포스팅 한다. 우선 딥러닝을 하기위해선 필수 불가결적으로 4가지 단계가 필요하다. 과거 참조할 데이터 모델의 구조 참조할 데이터를 모델에 학습 시키기. 해당 모델을 이용하여 결과 데이터 추출하기. 자 그럼 간단한 문제를 하나 풀어보도록 하자. 위의 이미지는 과거 참조할 데이터이다. 해당 이미지의 온도가 만약 15도 일때, 판매량을 예측하는 프로그램을 만들고자 한다. 그럼 위의 데이터를 참조할 데이터로 정하고 시작해보자. 기본적으로 tensorflow와 pandas를 사용할 것이다. pandas는 C#으로 생각하면 DataGrid..

    [C/C++] C++ auto keyword의 장점과 단점

    [C/C++] C++ auto keyword의 장점과 단점

    서론 C++ 에서는 auto라는 keyword가 있다. 쉽게 설명하자면, 타입을 명시적으로 쓰지 않아도, 코드에 맞게 자료형을 추론해주는 키워드이다. C#에서는 var 변수가 위 설명된 auto와 명시적으로 정의를 해주지 않는다는 점에서는 동일합니다. 저에게는 var 변수가 더 익숙하기에 auto에 대해 이해를 할 때 var와 비슷한 역할을 한다는 정의를 보았을 때 이해가 빨랐습니다. auto 키워드는 컴파일러가 컴파일 하는 과정에서 자료형을 결정해주기 때문에, 반드시 선언과 동시에 초기화를 해주어야한다. 아래의 이미지를 보자. 또한 컴파일 과정에서 자료형을 결정해준다는 것은 자칫 잘못하면 해당 자료형의 추적이 어려울수도 있고, 직관성이 떨어질 수도 있다. 아래 이미지를 보자. 컴파일 과정에서 자료형을 ..

    [백준 / BOJ] C++ 1991 트리 순회

    [백준 / BOJ] C++ 1991 트리 순회

    https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 풀이 정말 오랜만에 보는 순회 문제이다. 사실.. 나는 전위, 중위, 후위를 구현하는 방법을 알고있어서 어렵지 않게 문제를 풀었다. 풀이할게 딱히 없고, preorder, inorder, postorder를 구현할줄 알면 어렵지 않게 푸는 문제이다. Code ( C++ ) #include #define MAX 26 using namespace std; int N; typedef stru..

    [백준 / BOJ] C++ 1967 트리의 지름

    [백준 / BOJ] C++ 1967 트리의 지름

    https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 풀이 깊이우선탐색(DFS)를 이용한 문제이다. 백준 문제를 풀다보면 자주자주 나오는 유형의 문제이다. 그래도 이 문제는 가장 끝 노드와 그 해당 노드로 부터 가장 멀리 떨어진 노드를 찾는다는 조건이 주어지기 때문에 비교적 쉽게 문제 풀이가 가능하다. 조건의 시작점은 트리의 시작 노드에서 부터 가장 멀리 떨어진 노드이다. (DFS 탐색 첫번째) 조건의 끝점은 시작노드로 부터 가장..

    [백준 / BOJ] C++ 1932 정수 삼각형

    [백준 / BOJ] C++ 1932 정수 삼각형

    https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 문제에서 주어지는 조건을 활용해보자. 아래층으로 내려올때 선택 할 수 있는 수는 윗층에서의 대각선에 위치한 수이다. 즉, 위의 이미지를 참조하여 써보겠다. node[0][0] = 7 node[1][0] = 해당 node + node[0][0], node[1][1] = 해당 node + node[0][0] node[2][0] = 해당 node + node[1][0], node[2][1] = 해당 node + max(node[1][0], node[1][1]), .....

    [백준 / BOJ] C++ 1918 후위 표기식

    [백준 / BOJ] C++ 1918 후위 표기식

    https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 풀이 후위 표기식 문제이다. 기본적으로 후위표기식의 순서는 다음과 같다. 전체 식 중 괄호 안에 있는 연산 전체 식의 사칙연산 중에서 곱셈 또는 나눗셈이 들어간 연산 이후 더하기 빼기 연산 이후, 전역으로 선언해놓은 스택에는 연산자만 입력해준다. 입력한 문자열 ( 연산식 )의 길이만큼 한글자씩 탐색한다. 그렇다면 후위표기의 알고리즘은 아래와 같다. 알파벳인지, 연산자인지 우선 확인 여는 괄호 ..

    [백준 / BOJ] C++ 1753 최단경로

    [백준 / BOJ] C++ 1753 최단경로

    https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 풀이 다익스트라 문제이다. 시작노드부터 최단 경로를 찾아내며, 최단경로에 저장되어있는 가중치를 출력한다. 우선 아래 이미지는 위의 입력을 그림으로 표현하였다. 우선순위큐를 이용하여 가중치 낮은순으로 저장을 하고, 해당 노드 방문시 시작지점으로부터 가중치를 더하여 비교를 하였을 때, 작은 경우만 출력을 해주면 된다. Code ( C++ ) #include #in..