본문 바로가기

알고리즘/구름 edu

[구름LEVEL 유형 트레이닝 / 구현] 장마 (python)

728x90

문제 설명

마을 내 각각 집의 땅 높이가 주어지고, 장마가 내린 뒤 땅 높이를 구하는 문제이다.

장마 기간 동안 배수 시스템의 작동을 고려하여 땅 높이를 계산하면 된다.

 

배수 시스템은 3의 배수가 되는 날마다 작동하고, 작동 날짜를 기준으로 2일 이내에 비가 내린 위치에서만 작동한다.

5 6
0 0 0 0 0
1 2
1 3
1 1
2 2
2 3
4 5

예를 들어 위와 같은 입력을 받았다고 하자.

집은 5개, 장마 기간은 6일이다. 배수 시스템은 3일째, 6일째에 작동한다. 3일째에는 1, 2, 3일 동안 비가 내린 위치에서, 6일째는 4, 5, 6일 동안 비가 내린 위치에서 작동한다.

따라서 3일째에는 1, 2, 3번 집에 배수 시스템이 작동하고, 6일째에는 2, 3, 4, 5번 집에 배수 시스템이 작동한다.

 

풀이

N, M = map(int, input().split())
house = list(map(int, input().split()))
visited = [False for _ in range(N)]

for day in range(1, M + 1):
	start, end = map(int, input().split())
	for i in range(start - 1, end):
		house[i] += 1
		visited[i] = True
	
	if day % 3 == 0:
		for i in range(len(house)):
			if visited[i]:
				house[i] -= 1
				visited[i] = False

print(*house)

장마 일수 동안 for 반복문을 돌며 입력을 한줄씩 받는다.

start 부터 end까지의 집 위치에 비가 오므로 땅 높이를 +1한다. 그리고 배수 시스템 작동을 위해 만든 visited 배열에서 각 집 위치 인덱스를 true로 변경한다.

장마 일수 기간 중 3의 배수가 되는 날은 배수 시스템을 작동한다. 전체 집을 돌면서 2일 이내에 방문한 집이라면 높이를 -1하고 visited도 false로 돌려놓는다.

 

이를 반복하면 최종 땅 높이를 구할 수 있다.

*args 출력을 통해 배열의 괄호를 없앴다.

 

반응형