문제출처 : https://www.acmicpc.net/problem/1439
code
#include <stdio.h> #include <string.h> //strlen을 쓰기위한 헤더 int main() { char S[1000000] = " "; //S의 크기는 100만보다 작음 int cnt = 0; scanf("%s", &S); int len = strlen(S); //문자열의 길이를 재는 strlen()함수 for (int i = 0; i < len; i++) { if (S[i]!=S[i+1]) //문자가 바뀔때 cnt++을 해준다 cnt++; } printf("%d", cnt/2); //2로 나눠주는 이유는 010이면 문자가 2번바뀌므로 cnt는 2가되는데, return 0; // 실제로는 1번만 바뀌는걸로 보기때문에 2로 나눠준다. } //그리고 마지막에 0과 NULL문자와 비교할때도 cnt가 1올라가는데, //어차피 홀수면 결과가 바뀌진 않기 때문에 상관없음 //그리고 이렇게 세면 0->1이나 1->0상관없이 최소횟수를 세기때문에 구분할 //필요도 없어진다. (처음엔 구분해서 함수만들려고 했는데 이게더 빠르다.)
코드에 주석을 달아서 설명하는게 컴퓨터로 보면 편한데, 폰으로보니까 조금 깨지는것 같다.
나중에는 뭐 VS로 작성한다음 주석달아서 사진으로 첨부하던지 할까 생각중이다.