알고리즘 오답노트 02

박경준·2021년 6월 12일
0

알고리즘 문제풀이

목록 보기
2/24

0또는 1로 통일시키고 최소 횟수 반환하기

  • 틀린 부분 : 특정 자리수와 그 다음 자리수를 비교만 하고 첫째 자리 수를 비교하지 않았다.
  • 틀린 이유 : i와 i+1을 비교하게 되면 마지막엔 i와 0번째 자리를 비교해야 하는걸 깜빡했다 ㅎㅎ
input = "0101010"

def find_count_to_turn_out_to_all_zero_or_all_one(string):
  change_to_zero_count = 0
  change_to_one_count = 0
  for i in range(len(string)-1):
    if int(string[i+1]) - int(string[i]) == 1:
      change_to_zero_count += 1
    elif int(string[i+1]) - int(string[i]) == -1:
      change_to_one_count += 1
  
  if int(string[0]) - int(string[-1]) == 1:
    change_to_zero_count += 1
  elif int(string[0]) - int(string[-1]) == -1:
    change_to_one_count += 1
      
  return min(change_to_one_count, change_to_zero_count)

result = find_count_to_turn_out_to_all_zero_or_all_one(input)
print(result)

다음 자리수와 같지 않다는걸 가정한다면 굳이 빼기를 해주지 않아도 되겠다...!

input = "011110"


def find_count_to_turn_out_to_all_zero_or_all_one(string):
    count_to_all_zero = 0
    count_to_all_one = 0

	# 첫째 자리는 이전 자리수가 없으므로 그냥 바꿔준다고 생각하면 된다.
    if string[0] == '0':
        count_to_all_one += 1
    elif string[0] == '1':
        count_to_all_zero += 1

    for i in range(len(string) - 1):
    	# 둘째 자리부터는 이전 자리수와 다르다는 가정을 해야만한다...!
        if string[i] != string[i + 1]:
            if string[i + 1] == '0':
                count_to_all_one += 1
            if string[i + 1] == '1':
                count_to_all_zero += 1

    return min(count_to_all_one, count_to_all_zero)


result = find_count_to_turn_out_to_all_zero_or_all_one(input)
print(result)
profile
빠굥

0개의 댓글