숫자 1 양극을 나타내는 반면 0 음극을 나타냅니다.
자석의 두 극은 10입니다. 또는 01. 서로 끌어당기는 자석으로 그룹을 형성할 수 있습니다. 서로 다른 극을 가진 자석은 같은 그룹에 속합니다.
여기에서 N개의 자석이 주어집니다. 그들과 함께 할 수 있는 그룹의 수를 알아야 합니다.
서로 다른 두 개의 자석이 나란히 있을 때마다 새로운 그룹이 형성됩니다. 이 경우 그룹 수를 늘리십시오.
예를 들어 보겠습니다.
입력
magnets = ["10", "01", "01", "01", "10", "01"]
출력
4
주어진 배열에서 나란히 서로 끌어당기는 4개의 자석이 있습니다. "10", "01", "10", "01"입니다.
알고리즘
- 자석으로 어레이를 초기화합니다.
- 쌍을 취할 때 카운트를 1로 초기화합니다.
- 1 인덱스에서 배열 끝까지 반복하는 루프를 작성하십시오.
- 현재 자석이 이전 자석과 같지 않으면 카운트를 증가시킵니다.
- 카운트를 반환합니다.
구현
다음은 위의 알고리즘을 C++로 구현한 것입니다.
#include <bits/stdc++.h> using namespace std; int getMangetGroupsCount(string magnets[], int n) { int count = 1; for (int i = 1; i < n; i++) { if (magnets[i] != magnets[i - 1]) { count++; } } return count; } int main() { string magnets[] = { "10", "01", "01", "01", "10", "01" }; int n = 6; cout << getMangetGroupsCount(magnets, n) << endl; return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
4