[SWEA] 13038. ๊ตํํ์(python)
๐๋ฌธ์
๐ช์์ด๋์ด
- ์์
์์์ผ ์ ํ๊ธฐ
์ด๋ค ์์ผ์ ์์ ์ด ์์ํ๋๋์ ๋ฐ๋ผ ๋จธ๋ฌด๋ฅด๋ ๊ธฐ๊ฐ์ด ๋ฌ๋ผ์ง ์ ์๋ค. ์์ ์ด 1์ธ ๋ ์ ์์ํ๋ค๊ณ ๊ฐ์ ํ๊ณ ์ด ๋จธ๋ฌด๋ฅด๋ ๊ธฐ๊ฐ์ ๊ตฌํ์๋ค.
โ> ๋ณด์ํ ์
๋ฌธ์์ด์ฌ๋ฐฐ์น
: ์ฃผ์ ์์ ์ด ์์ํ๋ ์์ผ์ด ํ๋์ด๊ณ ์ด๋ฏธ input_day[0]==โ1โ์ด๊ฑฐ๋ ๋ชจ๋ ์์ผ์ ์์ ์ ํ๋ฉด ๋ฌธ์์ด ์ฌ๋ฐฐ์น๋ฅผ ํ์ง ์์๋ ๋จ - ์ด ๋จธ๋ฌด๋ ๊ธฐ๊ฐ ๊ณ์ฐํ๊ธฐ
์ผ์ฃผ์ผ์ ์ด๋ฆฌ๋ ์์ ์ ๋งํผ ์ผ์ฃผ์ผ์ฉ ๋จธ๋ฌผ์ด์ผํ๋ค. ์ด๋์ด ๋ค์ด์ผํ๋ ์์ ์ ๊ฐ์ // ์ผ์ฃผ์ผ์ ์ด๋ฆฌ๋ ์์ ์
๋ก ๋ช ์ฃผ ๋จธ๋ฌด๋์ง ๊ณ์ฐํ ์ ์๋ค.
์ด ๋ค์ด์ผ ํ๋ ์์ ์ ๊ฐ์ % ์ผ์ฃผ์ผ์ ์ด๋ฆฌ๋ ์์ ์
๋งํผ ๋ฉฐ์น ๋ ๋จธ๋ฌผ๊ฑด์ง ์ผ๋ค. ๋๋จธ์ง 0์ด๋ผ๋ฉด ๋ง์ง๋ง ์์ ์ด ํด๋น ์ฃผ ์ธ์ ๋๋๋๋์ ๋ฐ๋ผ ๋จธ๋ฌด๋ ์ผ์๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ๋ชซ์์ 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
26
27
def cnt_minimum_stay(n,course_per_week,course_open_days,answer):
week = n//course_open_days # ์์
์ ๋ฃ๋ ์ต๋ ์ฃผ
remaining_days=n%course_open_days
if remaining_days==0:
week-=1
remaining_days = course_open_days
total= 7*week
for chk in course_per_week:
if chk=='1': remaining_days-=1
total+=1
if remaining_days==0: break
if answer>total: answer=total
return answer
T = int(input()) # ํ
์คํธ ์ผ์ด์ค ์ ์
๋ ฅ๋ฐ๊ธฐ
for tc in range(1,T+1):
n=int(input())
input_days=input().split()
answer=float('inf')
course_open_days = input_days.count('1')#์ฃผ ์์
์ผ ์ธ๊ธฐ
#ํ๊ต์ ์ต์๋ก ๋จธ๋ฌผ๋ฌ์ผํ๊ธฐ ๋๋ฌธ์ ์์
์ด ์ฒ์ ์์ํ๋ ์์ผ์ ํ๊ต์ ๋จธ๋ฌผ๊ธฐ ์์ํด์ผํจ.
for i,chk in enumerate(input_days):
if chk=='1': #์์
์์์ผ
course_days = input_days[i:]+input_days[:i]
answer = cnt_minimum_stay(n,course_days,course_open_days,answer)
print('#{} {}'.format(tc,answer))
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.