코드포스|1553C|Penalty

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
8/136

문제설명

축구 경기에서 두 팀의 승부차기 골 기록표를 입력받고 경기가 끝나는데 필요한 최소한의 시행횟수를 구하는 문제입니다. 1이 입력되면 골이 들어간 것이고 0이 입력되면 들어가지 않은것 ?가 입력되면 두 경우 다 가능합니다.

작동 순서
1. 입력받을 골 기록표의 개수를 입력받습니다.
2. 골 기록표를 입력받습니다.
3. 두 팀은 공을 번갈아가며 차므로 t1, t2로 두 팀의 스코어를 기록하고 q1, q2로 두 팀의 ? 개수를 기록합니다.
4. 경기가 최대한 빨리 끝나는 경우는 스코어가 앞서는 팀의 ?를 모두 성공으로 기록하고 스코어가 뒤지는 팀의 ?를 모두 실패로 기록하여서 남은 골 기회보다 양팀의 점수 차이가 더 큰 경우이므로 조건문을 통해 비교합니다.
5. 경기가 끝나면 최소 몇번의 공을 찼는지 출력합니다.

소스코드

t = int(input())
for i in range(t):
    s = list(input())
    t1, t2 = 0, 0
    c1, c2 = 5, 5
    q1, q2 = 0, 0
    for j in range(10):
        if j % 2 == 0:
            if s[j] == "1":
                t1 += 1
            if s[j] == "?":
                q1 += 1
            c1 -= 1
        else:
            if s[j] == "1":
                t2 += 1
            if s[j] == "?":
                q2 += 1
            c2 -= 1
        if j >= 5:
            if (t1 + q1) - t2 > c2:
                break
            elif (t2 + q2) - t1 > c1:
                break
    print(j + 1)

후기
백준에서만 문제를 풀다가 코드포스에서 처음 문제를 풀어보니 인터페이스도 다서 어색하고 문제도 영어로 나와있어서 다소 어려움이 있었지만 1시간 정도 고민을 하고 틀린 답에서의 문제점을 찾다보니 해결할 수 있었습니다.

profile
INTP 개발자 지망생

0개의 댓글