✏️ 문제
문제 파악
조건이 너~~~~~무 많았다........... 그래서 반례를 잘 생각해봐야 하는 문제
내가 정리한 조건은 다음과 같다.
- 오프닝 시작 위치 <= 처음 시작 위치 < 오프닝 끝나는 위치이면 시작 위치 = 오프닝 끝나는 위치
- 명령 처리 후 시작 위치 대해
- 초가 59초 이상이면 분 += 1, 초 %= 60
- 초가 0초 이하이면 분 -= 1, 초 += 60
- 분과 초가 00:00 이하이면 분 = 0, 초 = 0
- 비디오 시간보다 크면 분 = 비디오 시작 분, 초 = 비디오 시작 초
- 오프닝 시작 위치 <= 처음 시작 위치 < 오프닝 끝나는 위치이면 시작 위치 = 오프닝 끝나는 위치
그리고 난 분과 초를 처리하는 과정에서
2차원 배열 total에 대해 total[1] = total[0] 이런식으로 값을 주고 total[0]에 대한 값을 건들인 적이 없는데 나중에 출력해보니 total[1]을 바꿀때마다 total[0] 값이 변했었다.
아마 복사와 관련된 문제인 거 같은데
대신에 total[1] = [total[0][0], total[0][1]] 이런 식으로 값을 주니 해결되었다..
코드
def opening(total):
start = (total[2][0] * 60) + total[2][1]
end = (total[3][0] * 60) + total[3][1]
cur = (total[1][0] * 60) + total[1][1]
if start <= cur < end:
total[1] = [total[3][0], total[3][1]]
return total
def solution(video_len, pos, op_start, op_end, commands):
total = [
list(map(int, video_len.split(":"))),
list(map(int, pos.split(":"))),
list(map(int, op_start.split(":"))),
list(map(int, op_end.split(":")))
]
# 오프닝 구간 확인
opening(total)
# commands 처리
for c in commands:
if c == "next":
total[1][1] += 10
else:
total[1][1] -= 10
# 초 단위 조정: 60초 이상
if total[1][1] >= 60:
total[1][0] += total[1][1] // 60
total[1][1] %= 60
# 초 단위 조정: 0초 이하
elif total[1][1] < 0:
total[1][0] -= 1
total[1][1] += 60
# 0:0 이하
if total[1][0] < 0 or (total[1][0] == 0 and total[1][1] < 0):
total[1] = [0, 0]
# video_len 초과
if total[1][0] > total[0][0] or (total[1][0] == total[0][0] and total[1][1] > total[0][1]):
total[1] = [total[0][0], total[0][1]]
opening(total)
m = '0' + str(total[1][0]) if 0 <= total[1][0] < 10 else str(total[1][0])
s = '0' + str(total[1][1]) if 0 <= total[1][1] < 10 else str(total[1][1])
return m + ':' + s
'PS > 프로그래머스' 카테고리의 다른 글
[Python] 성격 유형 검사하기 (0) | 2024.11.03 |
---|---|
[Python] 신고 결과 받기 (0) | 2024.11.02 |
[Python] 개인정보 수집 유효기간 (1) | 2024.11.02 |
[Python] 10번 / 공원 (0) | 2024.11.02 |
[Python] 공원 산책 (0) | 2024.11.01 |