CS/알고리즘_문제풀이(파이썬)

1차원 확산

Jedy_Kim 2021. 6. 12. 14:15
728x90

문제

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

 

#코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import sys
# 1 과 인접한 0 을 모두 1 로 바꾼 수열을 출력
 
def doit():
  global getArr, arr
  
  for i in range(n):
    if getArr[i] == 1:
      arr[i]   = 1
      arr[i+2= 1
      
  for i in range(1, n+1):
    print(arr[i], end=' ')
  
 
if __name__ == "__main__":
  input = sys.stdin.readline
  n      = int(input())
  getArr = list(map(int, input().split()))
  arr    = [0]*(n+2)
 
  for i in range(1, n+1):
    arr[i] =  getArr[i-1]
   
  doit()
cs

 

반응형

'CS > 알고리즘_문제풀이(파이썬)' 카테고리의 다른 글

N칸 확산  (0) 2021.06.13
2차원 확산  (0) 2021.06.12
2차원 밀기  (0) 2021.06.12
CHEEZE  (0) 2021.06.11
최단거리  (0) 2021.06.07