Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 출퇴근길 문제는 DFS로 풀어야하는 걸 알겠지만 DFS의 탈출 조건에 대해서 이해하고 생각하는데 어려움을 느꼈다. // DFS 레츠고 #include #include using namespace std; int visitedStoT[100001]; int visitedTtoS[100001]; vector dir[100001]; int N, M; int S, T; bool go(int cur, int end, int visited[]){ vector &tmp = dir[cur]; bool pass = false; for (int i = 0; i < tmp.size(); i++){ if (tmp[i] == end){ // 목적지에 도착하면..
C++
Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai #include #include using namespace std; int main(int argc, char** argv) { vector limit; vector test; int N, M; int range, fast; cin >> N >> M; for(int i = 0; i > range >> fast; for (int k = 0; k > range >> fast; for (int k = 0; k < range; k++){ test.push_back(fast); } ..
Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 모든 경우의 수를 반복문을 통해서 다 비교하면 복잡도 N^2가 나오는데 N의 범위가 2 ≤ n ≤ 100 이라서 시간이 충분하다. #include #include using namespace std; int main(int argc, char** argv) { int N, value; vector arr; cin >> N; for (int i = 0; i > value; arr.push_back(value); } int MAX = -100000; for (int i = 0; i < N - 1; i++){ for (int k = i + 1; k < N; k++){ MAX = max(arr[i] * arr[k]..
Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제는 위 링크에서 확인바란다. 일단 이 문제는 패턴을 파악해서 수식화하는 능력을 요구한다. 첫번째 네모의 한 변에 있는 점의 개수는 2개, 다음은 3개, 다음은 5, 9, 17 ... 이렇게 늘어나는데 패턴은 #include #include using namespace std; int main(int argc, char** argv) { int N; cin >> N; long long lineCount = 2; for (int i = 0; i
#include #include using namespace std; int main(int argc, char** argv) { int N, K; char value; vector arr; cin >> N >> K; for (int i = 0; i > value; arr.push_back(value); } int answer = 0; for (int i = 0; i = N ? N - 1 : i + K; for (int j = left; j
이 문제는 현대스러운 문제였다. 그래서 푸는데 재밌었다. 처음에는 어떻게 풀어야할지 고민을 좀 했던 것 같다. 하지만 이렇게 맵을 가지고 푸는 문제는 dfs, bfs중에 하나인 경우가 많기 때문에 이 두 알고리즘을 어떻게 적용할지 고민했다. 그래서 내가 푼 방식을 dfs를 여러 번 적용하는 방식이다. 일단 모든 외부의 0을 훑어야하고 1과 접촉한 0들이 1에 왔다갔음을 기록해야지 2개 이상이 접촉했음을 알 수 있다. 그래서 나는 이미 훑고 간 0은 -1로 바꾸었고 0이 접촉한 1을 +1을 해서 몇개 옆에 붙었는지 카운트하였다. 그래서 3이상의 값을 가진 얼음들은 2개이상이 접촉했기 때문에 1시간 뒤에 얼음이 녹는 것을 확인할 수 있었다. #include #include using namespace std..
이 문제는 딱봐도 DFS느낌이 바로 왔다. 맵에서 1을 만나는 경우 DFS를 이용해서 개수를 찾으면 될 것 같은 느낌이 왔다. 이 아이디어만 있으면 구현부분에서 잘하면 쉽게 풀 수 있는 문제이다. // 딱봐도 DFS #include #include #include #include using namespace std; vector arr; vector collect; vector dx = {1,0,-1,0}; vector dy = {0,1,0,-1}; int howMany = 0; int N; vector split(string &str){ vector line; for (char c : str){ line.push_back(stoi(string(1, c))); } return line; } void df..
#include #include using namespace std; int main(int argc, char** argv) { int N; int workTimeA, workTimeB, moveTimeAtoB, moveTimeBtoA; vector work, move; cin >> N; for (int i = 0; i > workTimeA >> workTimeB >> moveTimeAtoB >> moveTimeBtoA; work.push_back(make_pair(workTimeA, workTimeB)); move.push_back(make_pair(moveTimeAtoB, moveTimeBtoA)); } int A = 0; // A의 최소 시간 기록 int B = 0; ..