JLOG
[Python] 코드업 4040 : 펜션 풀이 본문
# Codeup 4040 : 펜션
# https://codeup.kr/problem.php?id=4040
room = []
#입력 변수 값을 int 형식으로 받기
n, m = map(int, input().split(" "))
for i in range(n) : #{
room.append(input())
#}
s, t = map(int, input().split(" "))
# check 하기 위한 zeros_list
zeros_list = [0]*m
# 처음 방에 들어가거나 옮긴 후 예약 가능한 방을 확인해 해당 인덱스를 1로 넘겨줌
def new_check(day_data): #{
result = [0]*m
for idx, ox in enumerate(day_data) : #{
if ox == "O" : result[idx] = 1
#}
if result == zeros_list : return -1
return result # 예를 들어 XXOXO라면 [0,0,1,0,1]로 return 해준다.
#}
# 최소로 옮기는 횟수를 세주는 함수
def check_max_day(room) : #{
# 옮기는 횟수, 처음 부분을 제외하기 위해 -1 부터 시작한다.
move = -1
# 예약 가능한 방을 check 하기 위해 방의 개수만큼 list를 만들어준다.
check_list = [0]*m
# 날짜 만큼 돌면서 예약 가능한 방을 check 해준다.
for day_data in room : #{
# check_list에 묵을 수 있는 전날의 정보가 있다면, 이어서 묵을 수 있는 방을 check 해준다.
if check_list != zeros_list :
for idx, r in enumerate(check_list) : #{
# 전날 방에서는 묵을 수 있지만 오늘 묵지 못하면 0으로 표시를 바꿔준다.
if r == 1 and day_data[idx] == 'X' : check_list[idx] = 0
#}
# 만약 check_list가 모두 0이라서 방을 옮겨야 한다면, 예약 가능한 방을 check 해준다.
if check_list == zeros_list :
# 방을 옮기므로 move + 1
move += 1
check_list = new_check(day_data)
# 만약 예약 가능한 방이 없다면 -1를 리턴해준다.
if check_list == -1 : return -1
#}
return move
#}
# 손님이 묵는 날짜 만큼 room 예약 정보를 indexing 해준다.
room = room[s-1:t-1]
print(check_max_day(room))
'Algorithm > 알고리즘 풀이' 카테고리의 다른 글
[Python] 코드업 #3130 : 소들의 헤어스타일 (0) | 2020.05.22 |
---|---|
[Python] 코드업 #2605 : 캔디팡 풀이 (2) | 2020.05.19 |
[Python] 코드업 2641 : 숏다리의 계단 오르기 (Small) 풀이 (0) | 2020.05.15 |
[Python] 코드업 2102 : 배수 풀이 (0) | 2020.05.10 |
[Python] 코드업 3301 : 거스름돈 풀이 (0) | 2020.05.10 |
Comments