백준(Python) 풀이/그리디 알고리즘

백준(Python) 12927번 배수 스위치 풀이

개발윗미 2021. 12. 29. 17:11

Python으로 구현한 12927번 배수 스위치 문제 풀이입니다.

 

https://www.acmicpc.net/problem/12927

 

12927번: 배수 스위치

첫째 줄에 전구의 상태가 1번 전구부터 차례대로 주어진다. Y는 전구가 켜 있는 경우, N은 전구가 꺼져있는 경우이다. 전구의 개수는 1보다 크거나 같고 1,000보다 작거나 같은 자연수이다.

www.acmicpc.net


n = list(input())
n.insert(0, 'N')

result = 0
for i in range(1, len(n)) :
  if n[i] == 'Y' :
    for j in range(i, len(n), i) :
      if n[j] == 'Y' :
        n[j] = 'N'
      else :
        n[j] = 'Y'
    
    result += 1

print(result)

 

1. 인덱스를 편리하게 1번부터 확인하기 위해 입력받은 리스트 첫번째 요소에 'N'을 삽입한다.

 

2. 반복문을 통해 문자를 하나씩 확인하는데, 해당 인덱스의 문자가 'Y'일 경우 i의 배수 번호를 가지는 전구의 상태를 반전시킨다.

 

3. 하나의 인덱스 값을 확인할 때마다 result값을 1 증가시켜, 반복문이 모두 끝나면 최종적으로 result 값을 출력한다.