2024-03-16
-아기 상어(16236, 백준) BFS를 이용한 구현 문제이다. n범위가 크지 않음으로, 물고기를 잡아먹을 때 마다 층을 나누어 구해주었다. 구현이 힘든것이지 문제의 아이디어는 그렇게 높지 않다. 자잘한 실수가 나오기 쉬운 문제라고 생각한다. 더보기 #include #include #include #include using namespace std; int dx[5] = { -1, 0, 1, 0 }; int dy[5] = { 0, -1, 0, 1 }; int dis[25][25][410], ch[25][25][410]; int map[25][25], now_size[410]; int n, cnt; int ansdis = 0; struct dat { int x, y, cnt; }; queue q; void..
2024-03-15
-회문(17609, 백준) 문자 하나를 수정해서 회문을 만들 수 있다면, 이를 유사회문이라 부른다. 이때 주어진 문자열이 유사회문인지, 회문인지, 둘 다 아닌지를 판단해야 되는 문제이다. 간단하게 문자열의 앞 뒤를 투포인터로 잡아준 뒤, 검사하다가 서로 다른 문자가 나온다면, 둘중 하나의 포인터를 옮기고 check를 해준다. 이때 이미 check가 되어있다면, 2번이상 바꾸어야 함으로 유사회문이 아니게 되기때문에 break해준다. 재귀로 구현하는 편이 좋다. 하지만 나는 멍청하기 때문에 다른 문자가 나왔을때, 스킵하는 포인터의 우선순위를 왼쪽과 오른쪽을 둘다 구현해서 풀었다. 더보기 #include #include int main() { int i, j, t; scanf("%d", &t); while (..
2024-03-11
-방배정(13304, 백준) 간단 한 문제이다. {1~2학년 남녀}, {3~4학년 남}, {3~4학년 여}, {5~6학년 남}, {5~6학년 여}그룹으로 나누어 풀면 된다. 입력 받은수가 어느 그룹에 속하는지를 확인하고 구하면 풀린다. 더보기 #include int low, mid_ma, mid_fe, high_ma, high_fe; int n, k; int main() { int i, j; scanf("%d %d", &n, &k); for (i = 0; i < n; i++) { int x, y; scanf("%d %d", &y, &x); if (1