[BOJ/1439] 그리디 문제

하..1시간 넘게 애를 쓰다가 결국 답을 봤다.

나는 애초에 이코테 코드 기반으로 배열(리스트)인자끼리 비교해서

그룹을 만들어서 풀려고했다.

0011100

같은 경우는 0의 그룹 (연속적인 숫자의) 이 2개, 1의 그룹이 1개 일때는 그룹의 숫자가 더 작은거를 뒤집어주면 되고

11001100110011000001

같은 경우 역시도

0의 그룹 : 4

1의 그룹 : 5

이기 때문에 0을 바꿔주면 된다고 생각해서..

그룹을 만들어서 하려고했는데

아무리 코드를 짜봐도 숫자의 수만 세는 코드를 만들고있었다...

 

기존 삽질 코드

'''
data = input()
groupA =0
groupB =0
num_list = list(map(int,data))
num = num_list[0]
for i in range(1,len(num_list)):
  print("i1",i)
  if num_list[i-1] ==0:  
    groupA +=1
    print("groupA",groupA)
    if num == num_list[i]:
      num = num_list[i+1]
    else:
      groupB+=1
      print("i2",i)
  else:
    groupB +=1
    print("groupB",groupB)
print(groupA if groupA <= groupB else groupB)


나의..돌고도는 바보같은 코드..

'''

 

 

정답 코드

s = input()
cnt = 0
for i in range(len(s)-1):
  if s[i] != s[i+1]:
    cnt +=1

print((cnt+1)//2)

 

원리는 다음과 같다.4

숫자가가 바뀌는 횟수를 세고, 변화 할때마다 바꿀 필요는 없기 때문에 //2 를 해준다.

...

너무 간단해서 ...

눈물이..

 

그치만 고수가 되기위한 삽질의 한스푼(?) 이라고 생각하기로 했다...하...

728x90

'✍️2023 > Algorithm' 카테고리의 다른 글

[BOJ/1212] 구현 문제  (0) 2023.04.21
구현  (1) 2023.04.21
[이코테] 그리디  (2) 2023.04.18
python 코테준비- 문법공부 (2)  (0) 2023.04.18
python 코테준비 - 문법 공부  (2) 2023.04.13