목록2026/01/12 (3)
승코딩당당당
문제[C++] 백준 2667: 단지번호붙이기 SILVER 1https://www.acmicpc.net/problem/2667 접근 방법이 문제는 지도에서 1로 표시된 집들이 상하좌우로 연결되어 있을 때,각 단지(연결 요소) 의 개수와 단지별 집의 수를 구하는 문제이다. 지도는 n × n 크기의 격자이므로, 모든 칸을 순회하면서 아직 방문하지 않은 집(1)을 만나면 BFS를 시작한다.BFS로 연결된 모든 집을 탐색하면 하나의 단지가 완성되며, 탐색 과정에서 방문한 집의 개수를 세어 단지 크기로 저장한다. 이 과정을 전체 지도에 대해 반복한 뒤, 단지의 개수와 각 단지의 크기를 오름차순으로 정렬해 출력하면 된다. 구현 시 주의할 점BFS를 시작할 때 초기 집도 단지 크기에 포함되므로 카운트를 1부터 시작해..
문제[C++] 백준 2331: 반복수열 SILVER 4https://www.acmicpc.net/problem/2331 접근 방법이 문제는 수열을 생성하다가 중복이 처음 발생하는 지점 이전까지의 원소 개수를 구하는 문제이다.수열은 다음 규칙으로 만들어진다.현재 수의 각 자릿수를 P제곱한 값들을 모두 더해 다음 수를 만든다. 이를 구현하기 위해시작 값 a를 벡터 d에 넣고value() 함수를 이용해 다음 값을 계속 생성한다.이미 나온 값인지 빠르게 확인하기 위해 boolean 배열(check) 로 방문 여부를 관리한다.처음으로 중복이 발생하면 수열 생성을 멈춘다.중복된 값이 처음 등장했던 위치를 찾아, 그 인덱스가 곧 정답이 된다. 구현 시 주의할 점자릿수 계산은 % 10과 / 10을 이용해 하나씩 분리..
문제[C++] 백준 10451: 순열 사이클 SILVER 3https://www.acmicpc.net/problem/10451 접근 방법이 문제는 순열이 주어졌을 때, 그 순열에 포함된 사이클의 개수를 구하는 문제이다.각 숫자는 정확히 하나의 숫자를 가리키므로, 전체 구조는 방향 그래프이며 각 연결 요소는 반드시 하나의 사이클을 포함한다. 그래프를 graph[i] = 다음 정점 형태로 저장한 뒤,아직 방문하지 않은 정점에서 DFS를 시작하면 하나의 사이클을 전부 탐색할 수 있다.따라서 DFS를 한 번 시작할 때마다 사이클의 개수를 1 증가시키면 된다. (cnt++) 구현 시 주의할 점이 문제는 일반 그래프가 아니라 순열 그래프이므로,한 정점에서 갈 수 있는 다음 정점이 항상 하나뿐이라는 점을 이용하면 ..