공기청정기 - 1차원 확산

파송송계란빡 ㅣ 2022. 2. 15. 15:16

문제


0 과 1 로 이루어진 길이가 N 인 수열이 주어진다.

이 수열에서 1 과 인접한 0 을 모두 1 로 바꾼 수열을 출력하여라.

입력


첫 줄에 N 이 주어진다.

두 번째 줄에 0 과 1 로 이루어진 수열이 주어진다.

(1 ≤ N ≤ 1,000)

출력


1 과 인접한 0 을 모두 1 로 바꾼 수열을 출력한다.

입력의 예 1

6
1 0 0 0 1 0

출력의 예 1

1 1 0 1 1 1

입력의 예 2

6
1 0 0 0 0 1

출력의 예 2

1 1 0 0 1 1

입력의 예 3

8
0 1 0 0 1 0 0 1

출력의 예 3

1 1 1 1 1 1 1 1

입력의 예 4

10
1 0 0 0 1 1 0 0 0 1

출력의 예 4

1 1 0 1 1 1 1 0 1 1

 

풀이

 - 결과값만 저장해둘 result_list 생성

 -  0부터 n까지 순서대로 보면서 data_list[i]가 1인 경우 앞(i-1) 뒤(i+1) 리스트에 1로 기록

 - 범위에 초과되지 않게 1 <= i <= n-2 

if __name__ == "__main__":
  n = int(input())
  
  data_list = list(map(int, input().split()))
  result_list = [0] * n
  #print(data_list)
  
  for i in range(n) :
    if data_list[i] == 1 :
        result_list[i] = 1
        if 1 <= i :
          result_list[i-1] = 1
        if i <= n-2 :
          result_list[i+1] = 1
          
  print(" ".join(map(str, result_list)))

d

공기청정기 - 1차원 확산