취준일기 - 1
·
취준일기
취업 준비 방향을 다시 잡아보며..취업을 준비하면서 그동안 포트폴리오에 꽤 많은 시간을 투자했다. 언리얼 엔진을 공부하면서 프로젝트를 만들고, 부족한 부분을 계속 수정하면서 포트폴리오를 완성해 나갔다.그리고 여러 취업박람회도 직접 참여해보면서 현업에서 어떤 부분을 중요하게 생각하는지도 알아보았다. 그렇게 준비를 하다 보니 처음 취업 준비를 시작했을 때와는 생각이 조금 달라졌다. 단순히 "포트폴리오를 잘 만들면 취업할 수 있겠지" 라는 생각에서 벗어나, 실제 면접에서는 어떤 지식을 물어보고 어떤 부분을 평가하는지 조금씩 알게 되었다. 그래서 포트폴리오를 어느정도 완성하고 정리한 뒤에는 공부 방향을 다시 잡았다. 현재는 알고리즘 코딩테스트와 CS 공부에 집중하고 있다. 알고리즘 (코테)현재 목표는 펄어비스 ..
백준 - 2529, 9934 (BruteForce)
·
C++ 프로그래머스 & 백준/Brute Force, BackTracking
백준 2529 - 부등호난이도 : 실버 1 10! 대충 300만언저리쯤의 시간복잡도가 나오는 문제브루트포스로 해결할수 있는 시간복잡도 문제여서 브루트포스로 풀었습니다 정수 연산을 Char로 해석할때는i + '0' 를 해야한다는걸 알게해준 문제였습니다#include #include #include #include using namespace std;int k;bool visited[13];char a[13];vector ret;bool IsValidOper(char a, char b, char op){ if (a b && op == '>') return true; return false;}void Go(int idx, string num){ if (idx == k + 1) { ret.push_back..
전위, 중위, 후위 트리
·
알고리즘 테스트
트리 순회에는DFS의 전위, 중위, 후위 순회와BFS의 레벨 순회가 있다BFS의 레벨 순회는 우리가 아는 위에서부터 아래로 레벨별 탐색 방식의 일반적인 BFS 순서이다.결과 : 3 6 2 1 4 5 7 DFS의 전위, 중위, 후위 순회의 그래프 탐색 순서는 이와 같다전위 순회 (Preorder)순서 : 루트 -> 왼쪽 -> 오른쪽결과 : 3 6 1 4 2 5 7중위 순회 (Inorder)순서 : 왼쪽 -> 루트 -> 오른쪽결과 : 1 6 4 3 5 2 7후위 순회 (Postorder)순서 : 왼쪽 -> 오른쪽 -> 루트결과 : 1 4 6 5 7 2 3 C++ 구현#include #include using namespace std;vector adj[10];//전위 순회 (루트 -> 왼쪽 -> 오른쪽)v..
백준 - 3197, 1987 ( BFS , 백트래킹)
·
C++ 프로그래머스 & 백준/C++ 백준
백준 3197 - 백조의 호수난이도 : 플래티넘 5 백조이동 BFS + 얼음 녹이기 BFS를 따로 관리하며하루 단위로 번갈아서 실행하는 BFS 방식으로 해결했습니다#include #include #include #include using namespace std;int r, c;const int dy[4] = { -1, 0, 1, 0 };const int dx[4] = { 0, 1, 0, -1 };queue> waterQ, waterTemp, swanQ, swanTemp;int visitedSwan[1504][1504], visited[1504][1504];int y, x, swany, swanx;char a[1504][1504];string s;int day;void Qclear(queue>& q){..
백준 13913, 14497 (BFS)
·
C++ 프로그래머스 & 백준/BFS , DFS
백준 13913 - 숨바꼭질 4 최단거리를 구하고 해당 최단거리의 경로를 역추적해서 출력하면되는문제입니다저번과 다르게 bfs의 최단거리 하나만 구하면되는 쉬운문제였습니다#include #include #include #include using namespace std;int n, k;int visited[100004];int parent[100004];int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; queue q; visited[n] = 1; q.push(n); while (q.size()) { int a = q.front(); q.pop(); //도착시 종료 if (a == k) break; ..
백준 16637, 12851 (BruteForce, BFS)
·
C++ 프로그래머스 & 백준/C++ 백준
백준 16637 - 괄호 추가하기 해당 문제는 브루트포스 문제이면서 방향성이 있고 사이클이 없는 그래프의 문제입니다 #include #include using namespace std;int n;string s;vector num;vector operStr;int ret = -987654321;int Oper(char c, int operA, int operB){ if (c == '+') return operA + operB; if (c == '-') return operA - operB; if (c == '*') return operA * operB;}//최대값void Go(int idx, int checkNum){ if (idx == num.size() - 1) { ret = max(ret, ..
백준 4179, 12869 (BFS)
·
C++ 프로그래머스 & 백준/BFS , DFS
백준 4179 - 불! 불과 사람이 서로 퍼져나갈때 최단거리를 구하는 문제다가중치가 같으면서 두개의 최단거리를 구하는 문제이기때문에 BFS문제이며다 풀었는데 마지막의 반례를 확인해줘야하는문제라 난이도가 좀 있었던거 같았습니다 .. 생각을 못했었거든요 처음에#include #include #include using namespace std;int n, m;char a[1004][1004];int fireList[1004][1004], personList[1004][1004];int ret;int y, x;int sy, sx;const int dy[4] = { -1, 0, 1, 0 };const int dx[4] = { 0, 1, 0, -1 };int INF = 987654321;bool InMap(int ..
백준 15686, 2589, 16234 (백트래킹, BFS, DFS)
·
C++ 프로그래머스 & 백준/C++ 백준
백준 15686 - 치킨배달 해당 문제의 시간복잡도는 O(C(K, M) × H × M)대충 1000만 안팍의 문제이므로 해당문제는 무식하게풀수있으며 백트래킹을 사용하면 풀린다#include #include using namespace std;int n, m;int result = 1e9;int a[54][54];vector> homeList, chickenList;vector> chicken;void Combi(int start, vector v){ if (v.size() == m) { chicken.push_back(v); return; } for (int i = start + 1; i > n >> m; for (int i = 0; i > a[i][j]; if (a[i][j] == 1) h..
완전탐색과 백트래킹
·
알고리즘 테스트
완전탐색Brute Force라고 불리며 모든 경우의 수를 탐색하는 알고리즘간단하게 말해 노가다 라고불린다 경우의 수는 단 두가지로 나뉜다순열 (n C r)조합 (n P r)순서와 상관이 있는경우순서와 상관이 없는경우 완전탐색을 사용해야할때?최대 범위로 시간복잡도를 계산했을때 보통 1억 미만이다그러면 BruteForce로 풀면된다사용방식반복문사용재귀함수 사용for문을 사용할 경우#include #include using namespace std;int main(){ vector v = { 1, 2, 3, 4, 5 }; //5라는 원소를 찾을때 for (int i = 0; i while문을 사용할 경우#include #include using namespace std;int main(){ vector v ..
백준 1436 - 영화감독 숌 (문자열)
·
C++ 프로그래머스 & 백준/문자열
문자열 다루는 문제입니다난이도는 낮은데 처음 봤을때 주춤거렸던 문제입니다for문의 무한루프 방식으로 풀어보았습니다#include #include using namespace std;int n;int main(){ cin >> n; int num = 666; for (;; num++) { if (to_string(num).find("666") != string::npos) n--; if (n == 0) break; } cout