본문 바로가기

알고리즘 문제/구현8

[개쉬운 풀이] 백준 3197 백조의 호수 CPP (21일차) https://www.acmicpc.net/problem/3197 문제 생각1. 먼저 호수의 영역을 숫자로 표현하여 구분한다.2. 물에 닿은 영역을 set을 활용하여 저장한다. (중복 방지)3. for문을 활용하여 set의 영역을 물로 만들고 다음 날 바뀔 영역들을 저장한다.4. 이때 백조들도 물 취급을 해준다.5. 백조들의 현재 영역을 비교하면서 반복한다. 어려웠던 점1. 영역을 처음에는 dfs를 통해 계속 숫자를 바꿔주려고 했지만, 시간초과에 직면하였다.2. 따라서 union find와 비슷하게 루트 영역을 만들어서 호수의 영역끼리 만나면 merge하였다.3. 백조도 물 취급을 해서 백조 위치의 영역도 생각해주어야 한다.4. melting()이 진행되기 전에, 다음 날 녹을 얼음들을 저장하면서 are.. 2024. 12. 13.
[개쉬운 풀이] 백준 16918 봄버맨 CPP (16일차) 문제 생각1. 처음에는 3초마다 행동이 진행되는 줄 알았다.2. 그러나 2초간격으로 생각하는 것이 맞다.3. 봄버맨은 2초에 한번씩 폭탄을 배치하고4. 폭탄은 3초에 한번씩 터진다.5. 따라서 매 time이 증가할때마다 폭탄이 터지는지 안터지는지 확인하면서,  2초에 한번씩 설치하면 된다. 풀이#include #include #include using namespace std;const int MAX = 201;int R, C, N;int map[MAX][MAX];int dx[4] = {1,-1,0,0};int dy[4] = {0,0,1,-1};void input(){ cin >> R >> C >> N; for(int i = 0; i > c; if(c == 'O') { .. 2024. 12. 7.
[개쉬운 풀이] 백준 2467 용액 (10일차) - 이분 탐색X https://www.acmicpc.net/problem/2467문제  생각사실 문제의 의도는 이분탐색이다. 그러나 두 값을 더해서 0에 가장 가까운 용액을 찾는 문제에서 영감을 얻었다.우리는 사전문제 등 문자열을 비교할때 보통 sort를 한 다음, 양 옆 문자들만 비교한다. 이를 착안하여 문제를 풀었다. 두 용액이 0에 가장 가까우려면 두 용액의 숫자 크기가 거의 비슷해야한다. 따라서 두 용액을 절대값 처리를 통해 정렬해주었다.[-99, -2, -1, 4, 98] => [1, 2, 4, 98, 99] 이렇게 되면 한 눈에 98과 99가 부호가 다르다면 정답임을 알 수 있다. 따라서 절대값 처리와 함께 원래의 부호도 같이 저장하여 정렬하였다. 마지막으로, 출력할 때 더 작은 값을 기준으로 출력해야한다. .. 2024. 12. 1.
[개쉬운 풀이] 백준 4659 비밀번호 발음하기 (7일차) https://www.acmicpc.net/problem/4659 문제 생각먼저 주어진 3가지 조건을 모두 만족해야 acceptable 이라고 할 수 있다.모음(a,e,i,o,u) 하나를 반드시 포함하여야 한다.모음이 3개 혹은 자음이 3개 연속으로 오면 안 된다.같은 글자가 연속적으로 두번 오면 안되나, ee 와 oo는 허용한다.모음이 중심이므로 한 글자씩 모음을 판별하면서 진행하면 될 것 같다.2번은 이전전, 인덱스 기준 -2 를 판별하는 것이 아닌, 모음과 자음의 갯수 count를 각각 양수와 음수로 더하여 판별하면 된다.즉, abs(count)를 진행했을 때 2를 넘어가면 return false해주면 된다. 3번은 이전 글자를 받아와서 매번 계속 확인해주면 된다. 이때 ee와 oo는 허용하는 케이.. 2024. 11. 28.