본문 바로가기

전체 글415

백준 1303 c++ "전쟁 - 전투" -PlusUltraCode- https://www.acmicpc.net/problem/1303 [필자 사고]단순한 BFS 탐색문제다.전체 탐색을 하면서 방문되지 않은 포인트에서 BFS를 이용하여 인접한 팀원들을 구하면 된다. 조심해야 될 점은 N과 M 이다 행과 열을 햇갈리지 말자.[코드 해설]1. Input()역할: 입력을 받아 전쟁터 지도를 초기화합니다.동작:첫 줄에서 N(가로, 열)과 M(세로, 행)을 입력받습니다.2차원 배열 arr를 M행 × N열 크기로 할당합니다.2차원 불린 배열 visited를 같은 크기로 만들어 방문 여부를 초기화합니다.이어서 전쟁터 지도(W, B)를 한 줄씩 읽어 arr에 저장합니다.2. isInside(y, x)역할: 주어진 좌표가 전쟁터 범위 안에 있는지 검사합니다.동작:y가 0 이상 M 미만, .. 2025. 8. 22.
백준 16472 c++ "고냥이" -PlusUltraCode- https://www.acmicpc.net/problem/16472 [필자 사고]전형적인 투포인터 문제다.1. 연속된 문자열2. 특정 조건 갯수 이런 형태로 나오게 되면 while문으로 left와 right 의 조건을 변경해야 한다.nowCount의 갯수가 주어진 N의 수보다 크게 되면 안쪽 while문을 이용하여 고유한 하나의 문자열을 삭제할 때가지계속 체크 및 삭제해야 된다.이게 제일 중요한 포인트같다.[코드 해설]1. Input 함수입력으로 정수 N과 문자열 str을 받습니다.N은 문자열에서 허용되는 서로 다른 문자 종류의 최대 개수를 의미합니다.즉, 문제는 "문자열에서 서로 다른 문자가 최대 N개만 포함된 가장 긴 부분 문자열의 길이"를 구하는 것입니다.2. Game_Start 함수문자열을 탐색하.. 2025. 8. 22.
백준 15961 c++ "회전 초밥" -PlusUltraCode- https://www.acmicpc.net/problem/15961 [필자 사고]슬라이딩 윈도우 및 투포인터 문제?? 정확히는 슬라이딩 윈도우 문제가 맞는거 같다.이 문제만의 재미난 점이 중복되는 초밥이 있을 수 있다.그걸 체크하기 위해 필자는 map자료구조를 이용해서 0 혹은 1일때 sushiType의 값을 갱신해줬다. 또한 마지막 max값 갱신 때 myMap[c]에 이미 특정 값이 있을경우 +1을 혹은 그냥 max갱신할지를 정했다. 아래는 자세한 코드해설이다.[코드 해설]이 코드는 회전 초밥 문제를 해결하기 위해 슬라이딩 윈도우 방식을 적용한 구조다.1. Input() 함수목적: 문제의 입력값을 받아서 전역 변수와 초밥 배열을 초기화한다.동작 과정초밥 벨트의 총 길이 N, 초밥 가짓수 d, 연속으로 .. 2025. 8. 14.
백준 14921 c++ "용액 합성하기" -PlusUltraCode- https://www.acmicpc.net/problem/14921 [필자 사고]투포인터 문제다다만 이 문제만의 매력적인 점은 음수 및 0에 가까운 수를 찾는 다는 것이다. 처음에 무의식적으로 가장 작은수를 갱신해줬는데 그렇게 하면 안됬다.0에가까운 수니깐 값이 양수냐 음수냐에 따라 left 와 right을 바꿔줘야 됬다.또한 갱신 때는 실제 값을 넣고 비교시에는 abs를 이용한다. 재미난 문제였다.[코드 해설]함수별 설명Input()배열 크기 N을 입력받습니다.정수 배열 arr에 N개의 원소를 입력받아 저장합니다.문제 해결을 위해 오름차순 정렬을 수행합니다.이는 투 포인터 탐색의 기반이 됩니다.Game_Start()두 수의 합이 0에 가장 가까운 값을 찾는 함수입니다.투 포인터를 이용해 효율적으로 탐색.. 2025. 8. 8.