문제 링크

문제 요약

이 문제는 타이어 옆면에 표시된 정보를 분석하여 해당 타이어의 전체 둘레를 계산하는 문제입니다. 타이어 정보는 P 195 / 75 R 14와 같은 형식으로 주어지며, 여기서 195는 섹션 너비(mm), 75는 섹션 높이/너비 비율(%), 14는 공칭 림 지름(인치)을 나타냅니다.

주어진 정보를 바탕으로 다음을 계산해야 합니다:

  1. 섹션 높이 (Section Height): (섹션 너비) * (비율) / 100
  2. 전체 지름 (Overall Diameter): (공칭 림 지름) + 2 * (섹션 높이)
  3. 전체 둘레 (Overall Circumference): π * (전체 지름)

모든 계산은 밀리미터 단위로 진행되며, 최종 둘레는 센티미터 단위로 변환 후 가장 가까운 정수로 반올림하여 출력해야 합니다. (1인치 = 2.54cm, 1cm = 10mm) 입력은 EOF(End Of File)로 종료됩니다.

풀이

이 문제는 주어진 타이어 정보를 파싱하여 요구되는 공식을 적용하는 구현 문제입니다.

  1. 입력 처리:

    • 입력은 여러 줄로 주어지며 EOF로 종료됩니다. try-except EOFError 구문을 사용하여 EOFError가 발생할 때까지 input()을 읽어들입니다.
    • 각 줄은 공백으로 구분된 문자열이므로, s.split()을 사용하여 각 요소를 리스트로 분리합니다.
  2. 필수 정보 추출:

    • s.split()으로 얻은 리스트에서 section_width는 두 번째 요소 (인덱스 1), ratio는 네 번째 요소 (인덱스 3), nominal_rim_diameter는 마지막 요소 (인덱스 -1)에 해당합니다. 이 값들을 정수로 변환합니다.
  3. 단위 변환:

    • nominal_rim_diameter는 인치 단위로 주어지므로, 이를 밀리미터 단위로 변환해야 합니다. 1인치는 2.54cm이고 1cm는 10mm이므로, 1인치는 25.4mm입니다. 따라서 nominal_rim_diameter * 25.4를 계산합니다.
  4. 계산 단계:

    • 섹션 높이 (Section Height): section_width * ratio / 100 공식을 사용하여 밀리미터 단위의 섹션 높이를 계산합니다.
    • 전체 지름 (Overall Diameter): 변환된 nominal_rim_diameter2 * section_height를 더하여 전체 지름을 계산합니다. 이 또한 밀리미터 단위입니다.
    • 전체 둘레 (Overall Circumference): math.pi * overall_diameter 공식을 사용하여 전체 둘레를 계산합니다. 결과는 밀리미터 단위입니다.
  5. 결과 출력:

    • 계산된 전체 둘레(밀리미터)를 10으로 나누어 센티미터 단위로 변환합니다.
    • Python의 round() 함수를 사용하여 변환된 둘레 값을 가장 가까운 정수로 반올림합니다.
    • 문제에서 요구하는 출력 형식({원래 입력 문자열}: {반올림된 둘레 값})에 맞춰 결과를 출력합니다.

이 과정들을 각 입력 줄마다 반복하여 문제를 해결합니다.

정답 코드

def solve():
  while 1:
    try:
      s = input()
    except EOFError:
      break
  
    l = s.split()
 
    section_width = int(l[1])
    ratio = int(l[3])
    nominal_rim_diameter = int(l[-1]) * 25.4 # 인치를 밀리미터로 변환 (1 inch = 2.54 cm = 25.4 mm)
 
    section_height = section_width * ratio / 100 # 밀리미터 단위
    overall_diameter = nominal_rim_diameter + 2 * section_height # 밀리미터 단위
 
    radius = overall_diameter / 2 # 밀리미터 단위
    
    # 전체 둘레 (밀리미터 단위)
    # 2 * pi * radius = pi * overall_diameter
    circumference_mm = pi * overall_diameter
    
    # 센티미터로 변환 후 반올림
    ans = round(circumference_mm / 10) 
    print(f"{s}: {ans}")
 
if __name__ == "__main__":
  tc = 1
  for t in range(1, tc+1):
    ret = solve()
 

연관 페이지

참고 문헌 / 사이트