[백준] 1439번 : 뒤집기 (파이썬)

뚝딱이 공학도·2022년 2월 25일
0

문제풀이_백준

목록 보기
70/160



문제


나의 답안

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로 나눈 몫을 구하면 된다.

  1. 반복문을 통해 입력받은 문자열(s)에 접근한다. 이 때 배열을 초과하지 않기 위해 -1만큼 해줘야한다.
  2. 조건문으로 입력받은 문자열의 현재 문자와 다음 문자열이 다르면 변화횟수(cnt)를 1증가 시킨다.
  3. 예시의 규칙에 따라 변화횟수는 뒤집는 횟수에 1을 더한 후 2로 나눈 값이므로 (cnt+1)//2)를 구해서 출력한다.

0개의 댓글