문제
나의 답안
s=input()
cnt=0
for i in range(len(s)-1):
if s[i]!=s[i+1]:
cnt+=1
print((cnt+1)//2)
접근방법
변화하는 것
- 변화할 위치를 발견했을 때 한번 변함, 이후 다른 숫자가 나온다면 해당 위치 종료 후에 한번 더 숫자가 변함
뒤집는 것
- 연속된 숫자는 한번에 뒤집으므로, 연속된 숫자라면 각 위치마다 매번 뒤집는 횟수를 구할 필요 없음
(0001100는 변화는 2번(0->1에서 1번 | 1->0에서 1번, 뒤집는 것은 1번)
(11001100110011000001는 변화는 7번, 뒤집는 것은 4번)
- 따라서, 변화 횟수에서 뒤집는 횟수를 구하려면 변화 횟수에 1을 더한 후 2로 나눈 몫을 구하면 된다.
- 반복문을 통해 입력받은 문자열(s)에 접근한다. 이 때 배열을 초과하지 않기 위해 -1만큼 해줘야한다.
- 조건문으로 입력받은 문자열의 현재 문자와 다음 문자열이 다르면 변화횟수(cnt)를 1증가 시킨다.
- 예시의 규칙에 따라 변화횟수는 뒤집는 횟수에 1을 더한 후 2로 나눈 값이므로
(cnt+1)//2)
를 구해서 출력한다.
정리 감사합니다 ㅎㅎ 잘보고 갑니다!