본문 바로가기

cpp46

[개쉬운 풀이] 백준 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.
[개쉬운 풀이] 백준 9017 크로스 컨트리 (6일차) https://www.acmicpc.net/problem/9017 문제 생각먼저 문제에서 주어진 조건들을 모두 찾아야한다.1. 팀은 6명으로 구성되어야 한다.2. 팀 점수는 상위 네 명의 주자의 점수를 합하여 계산한다.3. 점수는 자격을 갖춘 (6명인 팀) 에게만 부여한다.4. 팀 점수가 낮은 팀이 우승한다.5. 팀 점수가 동률이면 5번째 팀원 중 더 빠르게 들어온 사람이 이긴다. 위 조건을 천천히 구현하면 된다. 풀이#include #include #include #include using namespace std;const int TEAM_SIZE = 6; // 팀의 인원 수const int MAX = 201; // 최대 팀 번호int N; // 참가자의 수vector ranking; .. 2024. 11. 27.
[개쉬운 풀이] 백준 6087 레이저 통신 (5일차) https://www.acmicpc.net/problem/6087문제 생각1. 처음에는 단순하게 BFS로 풀면 된다고 생각했다.2. 또한 거울의 수는 단순하게 레이저가 꺽인 횟수라고 생각하였다. 3. 따라서 처음 queue에 C에서 나아갈 수 있는 방향 4가지를 넣어서 시작했다.4. 이때 queue에는 (x, y 좌표와 방향, 거울 수)가 담겨있다.5. 다음 현재 방향과 다음 방향을 맞추어 거울의 수를 담아서 BFS를 완성하였다. 1. 그러나, 이 과정에서 방향 때문에 겹치는 x,y좌표가 많아지게 되면서 메모리 초과 문제가 발생하였다.2. 따라서 isVisited를 2차원 배열이 아닌 방향을 추가한 3차원 배열로 만들어서 해결하였다. 결론 : BFS / DFS 문제에서 좌표뿐 만 아니라 다른 변수가 있을.. 2024. 11. 26.
[개쉬운 풀이] 백준 2933 미네랄 (4일차) https://www.acmicpc.net/problem/2933 문제 생각1. 천천히 구현하면 된다.2. 왼쪽, 오른쪽을 구분해서 미네랄을 탐지해야한다.3. 행이 아래부터 0,0이기 때문에 구현할때는 평소 구현할때 Row를 뒤집어서 생각해야한다.4. 미네랄을 파괴시키고 그 주변 4칸을 클러스터 판별하자.5. 클러스터는 1개만 떨어진다.6. 클러스터에 해당하는 정보들을 저장해야한다.7. 클러스터가 떨어질때 ㄷ 자 모양같은 경우 위 클러스터와 아래클러스터가 떨어질 수 있는 범위가 다를 수 있다. //좋은 예시8. 따라서 모든 클러스터 정보에 대해서 떨어지는 경우를 구한 뒤, 최소값을 찾아서 떨어뜨려야한다. 풀이#include #include #include using namespace std;const i.. 2024. 11. 25.