[도해해설] 조이 2021-2022 1차 예선 2차 문제 2단침

도해 해설 시리즈


이제 막 경기 프로그램 설계를 시작한 AtCoder의 해설과 JOI의 해설을 아직 완전히 알아듣지 못한 사람을 대상으로 도해를 사용해 해설을 진행한다.

문제문


정보 올림픽 일본 위원회 등재 문제


AtCoder에 게시된 문제


입출력 등 실제 확인 후 자신이 만든 프로그램을 채점할 수 있다.

도해 설명


이번 연도 1차 예선 B 문제는 다음 3가지 기술을 확인하는 문제다.
1. 입력, 출력을 정확하게 활용
2. 산술 연산자를 정확하게 활용
3. 조건 지점을 정확하게 활용할 수 있다(if)
문제문을 정리하기 위해 구체적인 숫자를 사용해 그림을 그려 보세요.

예 1을 입력한 A=9시를 사용하여 B 시간 후 몇 시 테이블을 만듭니다.이렇게 하면 1~12개의 숫자가 주기적으로 나오는 것을 확인할 수 있다.
따라서 테이블에 A+B의 계산 결과를 추가합니다.12시간마다 한 번씩 변하기 때문에 A+B를 12로 나눈 나머지를 더해 보자.이렇게 되면 나머지가 0일 때는 시간이 일치하지 않지만 다른 시간은 일치한다.따라서 A+B를 12여수로 0으로 나누면 12로 대답하고, 그렇지 않으면 A+B로 12여수로 나누어 프로그램을 만든다.

장소를 가리지 않고 답을 주는 방법을 생각해 보자.1시에서 12시까지의 주기와 12를 0~11의 주기와 일치하도록 계산을 조정하다.따라서 A+B-1을 계산하고 이 값(A+B-1)을 12의 나머지로 나누면 주기가 일치한다.1을 너무 많이 넣으면 1~12로 1시~12시의 값과 일치한다.

해답 예시


나머지는 0과 다른 때 분리된 프로그램입니다.


b1.py
A = int(input())
B = int(input())
#A時のB時間後が何時になるか計算を行う
#A+Bを計算し12で割った余りが0のときは、12時
#A+Bを計算し12で割った余りが0でないときは、余り
if (A+B)%12==0:
  print(12)
else:
  print((A+B)%12)
채점 사이트에 제출하는 프로그램

여수를 조정하고if문장을 사용하지 않고 만든 프로그램


b2.py
A = int(input())
B = int(input())
#A時のB時間後が何時になるか計算を行う
#A+B-1を計算し12で割った余りに1を加えたのが答え
print((A+B-1)%12+1)
채점 사이트에 제출하는 프로그램

삽화


슬라이드에 사용된 아트웍은 모두 "조급한 사람"의 소재입니다.

좋은 웹페이지 즐겨찾기