전체 글21 [프로그래머스] 개인정보 수집 유효기간 C++ 날짜를 비교해서 유효기간이 지난 것들을 추려내는 문제다. 만약 '월'이 13, 14.. 같은 수가 나왔다면 12로 나눈 몫을 '년'에 더해주고 나머지를 '월'로 초기화해주면 된다. 그런데 12, 24 같은 12의 배수가 나오면 얘기가 다르다. 이 경우에는 (12로 나눈 몫 - 1) 만큼 '년'에 더해주고, 나머지가 0인 경우엔 12로 다시 바꿔줘야 한다. 아니면 '월'을 1 ~ 12로 보는게 아니라 0 ~ 11로 보고 계산을 해도 된다. 그럼 12의 배수인지 염병인지 따질 필요 없이 그냥 계산 다 해주고 마지막에 +1만 더해주면 된다. 실수하기 아주 쉬운 부분이다. 2024. 3. 28. [C++] 백준 1107 (리모컨) 오답을 유발하는 가장 큰 원인은 바로 '첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다.' 라는 문구 때문이 아닐까 싶다. 저 문장을 보고 티비채널은 0 ~ 500,000 까지 있구나 라고 생각할 수 있지만 문제에도 나와있듯 채널번호는 무한대이다. 즉 500,000 보다 더 큰 번호의 채널로 간 뒤에 채널을 아래로 내려서 원하는 채널을 맞출수도 있다는 것. 따라서 채널이 1,000,000 번 까지 있다고 생각하고 풀어야 된다. (정확히는 999,900) 0 ~ 1,000,000 채널 중에 고장난 숫자를 포함한 채널은 0을 반환해서 버리고, 작동하는 숫자버튼을 이용해서 갈 수 있는 채널에서 TargetChannel (수빈이가 이동하려고 하는 채널) 을 빼서 리모컨의 .. 2023. 8. 8. [C++] 백준 1074번 (Z) 2^n * 2^n 크기의 2차원 배열을 'Z'모양으로 탐색할 때 r행 c열은 몇 번째로 탐색하게 되는가?라는 문제이다.이 문제의 핵심은 '4등분'이다. n = 1일때 아래 사진과 같은 순서로 탐색을 한다아래 그림이 n = 2, 3, 4... 일 때 크게 4구역으로 나눈거라고 생각해보면n의 값에 상관없이 항상 4구역으로 나누어서 왼쪽 위를 제일 먼저 탐색하고, 그 다음 오른쪽 위, 왼쪽 아래, 오른쪽 아래를 탐색한다는 것을 알 수 있다. 따라서, 우리는 점점 범위를 좁혀가며 4개의 구역 중 어느 구역에 속하는지를 알아내면 r행 c열이 몇 번째로 탐색되는지 알 수 있다.예컨대, n = 3일 때, 6행 4열이라고 하면4번째 구역에 속할 것이다. 여기서 파란색 영역 (4번째 구역)만을 또 따로 떼서 4개의 구역.. 2023. 7. 11. [C++] 1012번 (유기농 배추) 아마도 가장 전형적인 DFS 문제가 아닐까 싶다. 한 지점에 지렁이가 있으면 그와 이웃한 곳에는 지렁이가 없어도 된다 (대각선 제외) . 모든 땅을 전부 돌면서 배추가 없는 곳과 방문을 했던 곳은 볼 필요 없고 배추가 있으면서 동시에 방문 하지 않았던 곳에서 출력값을 ++ 해준다. 그리고 DFS 함수를 이용해 그와 이웃한 곳에 있는 땅을 전부 방문해서 그곳에 배추가 있으면 방문기록을 해준다. #include using namespace std; int farm[50][50]; int visited[50][50]; int m, n, k; void DFS(int a, int b) { if (farm[a + 1][b] && a + 1 < m && !visited[a + 1][b]) { visited[a + 1.. 2023. 7. 8. 이전 1 2 3 4 ··· 6 다음