BoJ 26563 - Exam [with Python / 문제 한국어로 번역]

ssook·2023년 9월 4일
0

BoJ 문제기록

목록 보기
8/29

📍 문제

당신과 친구는 n개의 문제로 이루어진 참/거짓(T/F) 문제 시험을 봤습니다.
여러분은 본인이 제출한 답안과 친구의 답안을 알고 있으며,
친구가 그 답안 중에서 k개의 문제를 정확하게 맞췄다는 것을 알고 있습니다.

그렇다면, 당신은 몇 개의 문제를 맞췄을까요?
당신이 정확하게 맞춘 최대 문제 수를 계산하세요.
(여러 경우가 있겠지만, 가장 많이 맞춘 경우의 수를 구하면 됩니다.)

입력

입력의 첫 줄에는 데이터셋의 수를 나타내는 정수 mm이 포함됩니다.
각 데이터셋은 정확하게 kk를 나타내는 정수로 시작합니다.
데이터셋의 두 번째 줄에는 당신이 작성한 nn (1 ≤ nn ≤ 1000)개의 문자로 이루어진 답안이 포함됩니다.
각 문자는 'T' 또는 'F' 중 하나입니다.
데이터셋의 세 번째 줄에는 친구가 작성한 nn개의 문자로 이루어진 답안이 포함됩니다.
각 문자는 'T' 또는 'F' 중 하나입니다.
입력은 0 ≤ kknn을 만족합니다.

출력

각 데이터셋에 대해, 한 줄에 최대로 정확하게 맞힐 수 있는 문제 수를 출력합니다.

📍 아이디어

간단한 greedy 문제.

본인이 제출한 답안과 친구가 제출한 답안 중 동일하게 작성한 답안을 기준으로 해당 값이 친구가 맞춘 값보다 큰지, 작은지, 같은지 이렇게 3가지로 분기를 나눠 각각 계산해주면 된다.

📍 제출코드

import sys

t = int(sys.stdin.readline().rstrip())

for i in range(t):
  friend = int(sys.stdin.readline().rstrip())
  cnt = 0

  my = list(sys.stdin.readline().rstrip())
  friends = list(sys.stdin.readline().rstrip())

  for i in range(len(my)):
    if my[i] == friends[i]:
      cnt += 1
  
  if cnt == 0:
    print(len(friends)-friend)
  
  elif cnt > friend:
    diff = len(my) - cnt
    print(friend + diff)
  
  elif cnt == friend :
    print(cnt)
  
  elif cnt < friend:
    diff2 = len(friends)-friend
    print(cnt+diff2)
profile
개발자에서, IT Business 담당자로. BrSE 업무를 수행하고 있습니다.

0개의 댓글