https://www.acmicpc.net/problem/15721
문제 풀이
- t개까지의 0또는 1의 개수인 m과 t가 같아질 때까지 while문을 반복하도록 했습니다
- ppun이라는 list를 만들어 while문 안에서 0, 1, 0, 1, (0)*n, (1)*n 을 append 하도록 했습니다
- 번과 데기는 한번 반복할 때마다 1씩 증가하여 4, 5, 6, 7... 번씩 반복됩니다
- 그래서 len(puun)을 2로 나눈 개수가 t보다 클 경우와 아닌 경우로 나누어 코드를 작성했습니다
- len(ppun)//2의 개수가 t보다 작을 경우에는 n을 1증가시켜 while문을 다시 진행하게 하였고, 큰 경우는 ppun만큼 for문을 돌려 total을 1씩 증가시키고 찾으려는 문자(0, 1)가 나올 때마다 m의 개수를 count하도록 하였습니다
- 결국 원하는건 total값에서 학생수를 나눈 값인데, 만약 total이 12이고 학생수가 4면 0이 나오게 됩니다
- 그래서 student라는 list를 따로 만들어서 [0, 1, 2, 3...a-1]를 담아주었고, total % a한 값에서 -1을 한 값을 index로 student에서 찾아 답을 구하도록 했습니다
a = int(input()) # 학생수
t = int(input()) # 원하는 개수
want = int(input()) # 원하는 문자
n = 2 # 반복횟수
m = 0 # t개까지의 0 or 1의 개수
total = 0
student = [i for i in range(a)]
ppun = []
while m != t:
ppun += [0, 1, 0, 1]
for _ in range(n):
ppun.append(0)
for _ in range(n):
ppun.append(1)
if len(ppun) // 2 >= t:
# print(len(ppun))
for i in range(len(ppun)):
total += 1
if ppun[i] == want:
m += 1
if m == t:
# print(total, m)
break
else:
n += 1
print(student[total % a - 1])