카테고리 없음
[swea] 13038번: 교환학생 - 파이썬(python)
아뵹젼
2022. 11. 2. 23:06
T = int(input())
day = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
for t in range(1, T+1):
n = int(input()) # 들어야 하는 수업 개수
arr = list(map(int, input().split()))
course = [i for i in range(7) if arr[i] == 1] # 수업이 열리는 날짜 인덱스
num = len(course) # 일주일에 열리는 수업 개수
answer = int(1e9)
for i in range(num):
now = course[i] # 시작 인덱스
cnt = 0
day = 0
while cnt < n:
if arr[now] == 1: # 현재 날짜에 수업이 있다면
cnt += 1
day += 1 # 하루지남
now += 1 # 인덱스 증가
if now > 6: # 인덱스가 7이라면
now = 0 # 0으로 리셋
answer = min(answer, day)
print(f'#{t} {answer}')
계속 75%에서 실패하여서 애를 먹은 문제..
처음에 어떤 요일에서 시작할지를 고려하지 않았던 것이 문제였다!!!
따라서 모든 시작점을 고려하여, 날짜를 계산 후 그중 최솟값을 골랐다.
처음에는 while 문으로 모든 날짜를 1씩 증가하면서, 모든 경우에 대해 다 고려하는 것이 비효율적이라고 생각했다.
그래서 복잡도를 줄이려고 다른 방법을 찾다가 정신차려보니 몇시간동안 먼산으로 문제를 풀고 있었다.
여기에서 현타를 느끼고 그냥 fm 대로 풀기로 했다.
input 도 10^5면 그렇게 크지 않으니깐..
결국 중요한점은 코테 볼 때는 넘 딥하게 생각하지 말고, 그냥 정석대로 풀라는 것이다.