본문 바로가기
반응형

[백준]214

백준 17142번 C++ 삼성 기출문제를 풀어보았다. 연구소 시리즈는 이로써 다 풀었다. 이 문제에서의 핵심은 "바이러스는 M개가 있고 그 중 K개를 활성화 하는 경우의 수" 라고 볼 수 있다. 조합을 통해 경우의 수 마다 BFS를 진행해 최단시간의 경우를 구해주면 된다. 이 문제를 위해 내가 추천하는 방식은 mCk 조합 구현을 위해 next_permutation 함수를 사용하는 것이다. next_permutation 함수 알아보기 vector v = {1, 2, 3}; do { for(auto o : v) { cout K; for(int i = 0; i > map[i][j]; if(map[i][j] == 2) virus.push_back({i, .. 2023. 10. 6.
백준 20055번 C++ 이번에도 삼성 기출문제이다. 문제에서 요구하는 그대로 구현하면 되는 문제! 내가 생각한 이 문제의 핵심은 1. deque와 pair를 이용하는 것 2. 가장 먼저 놓인 로봇은 항상 가장 멀리 가 있다는 것 (한칸씩 이동하므로 당연) 두 가지만 생각하면 문제를 풀 수 있다. #include #include #include #include using namespace std; int main() { int N, K; int phase = 0, limit = 0, temp; deque container; cin >> N >> K; for(int i = 1; i > temp; container.push_back({temp, false}); } while(limit < K) { phase++; // 1. 회전 c.. 2023. 10. 4.
백준 17140번 C++ 오랜만에 삼성 기출문제를 풀어봤다. 삼성은 대부분 구현문제로, 문제에서 주어진 조건을 잘 보면 구현할 수 있지만 예외처리로 문제의 정답과 오답이 판가름된다. 최단 시간을 물어보는 문제여서 혹 할수도 있지만, 최대 조건의 k가 100이기 때문에 정말 구현문제이다. 이 문제에서 내 코드의 핵심은 1. map을 이용해서 저장한 뒤에, vector로 변환해주기 2. 주어진 조건이 100초까지이므로, 100초도 포함시켜야함 두 가지라고 볼 수 있다. 배열을 돌면서 map을 이용해서 값을 저장시켜 준 뒤에, 이를 vector의 pair 쌍으로 변환시킨 뒤에 (정렬을 위해), 정렬을 진행시킨다. 그리고 100초가 포함될 수 있기 때문에 75%에서 틀렸습니다가 뜨시는 분들은 100을 포함시키면 된다..! 이런 것 때문.. 2023. 10. 4.
백준 11286번 절댓값 힙 multiset을 이용해서 풀었다 #include #include #include using namespace std; int main() { int N, num; multiset mset; cin >> N; while(N--) { cin >> num; if(num != 0) { mset.insert({abs(num), num}); } else if(mset.size() == 0) { cout 2023. 8. 10.
반응형