1439

Leeys·2022년 1월 5일

백준

목록 보기
1/14

풀이1

  1. 0과 1중 더 적은 갯수를 가진 것을 찾아서 연속되는 인덱스까지 뒤집으면 될 것
  2. 리스트로 입력받고 0과 1의 갯수를 센다
  3. 더 적은 갯수의 수를 뒤집는다. 그 인덱스들 중에서 특정 인덱스의 다음 인덱스도 같은 수라면 같이 뒤집고 리스트가 끝날때 까지 이것을 반복하고 횟수를 센다.

코드

S = input()
S = list(S)


i = 0
count = 0

if S.count('0') < S.count('1'):
  while True:
    if i == len(S):
      break
    
    if S[i] == '0':
      S[i] = '1'
      i += 1
      count += 1
      while S[i] == '0':
        S[i] = '1'
        i +=1
      
    i += 1
elif S.count('0') > S.count('1'):
  while True:
    if i == len(S):
      break
    
    if S[i] == '1':
      S[i] = '0'
      i += 1
      count += 1
      while S[i] == '1':
        S[i] = '0'
        i +=1
      
    i += 1
else:
  count = 0
    

print(count)

오류
갯수를 카운트 하는게 아니라 중복되는 인덱스의 갯수를 먼저 확인하고 단순 비교해서 작은걸 출력하면 되는 문제인거 같다.

풀이2

  1. 리스트에서 0과 1이 반복적으로 나오는 인덱스의 갯수를 먼저 구해서 변수에 저장하자
  2. 두 변수를 비교 후 적은걸 출력하자

코드

S = input()
S = list(S)

countZero = 0
countOne = 0

i = 0
while True:
  if i == len(S):
    break

  if S[i] == '0':
    countZero += 1
    if i != len(S) - 1:
      while S[i + 1] == '0':
        i += 1
        if i == len(S) - 1:
          break

  i += 1

i = 0
while True:
  if i == len(S):
    break

  if(S[i] == '1'):
    countOne += 1
    if i != len(S) - 1:
      while S[i + 1] == '1':
        i += 1
        if i == len(S) -1:
          break

  i += 1

if countOne > countZero:
  print(countZero)
else:
  print(countOne)
  
profile
공부 리마인드

0개의 댓글