[도해해설] 조이 2021-2022 1차 예선 2차 문제 2단침
3539 단어 AtCoder정보 올림픽Python시합 프로그램 설계
도해 해설 시리즈
이제 막 경기 프로그램 설계를 시작한 AtCoder의 해설과 JOI의 해설을 아직 완전히 알아듣지 못한 사람을 대상으로 도해를 사용해 해설을 진행한다.
문제문
정보 올림픽 일본 위원회 등재 문제
AtCoder에 게시된 문제
입출력 등 실제 확인 후 자신이 만든 프로그램을 채점할 수 있다.
도해 설명
이번 연도 1차 예선 B 문제는 다음 3가지 기술을 확인하는 문제다.
1. 입력, 출력을 정확하게 활용
2. 산술 연산자를 정확하게 활용
3. 조건 지점을 정확하게 활용할 수 있다(if)
문제문을 정리하기 위해 구체적인 숫자를 사용해 그림을 그려 보세요.
![](https://s1.md5.ltd/image/b7097504f7c40f1a1651b1f6b4580fb2.png)
예 1을 입력한 A=9시를 사용하여 B 시간 후 몇 시 테이블을 만듭니다.이렇게 하면 1~12개의 숫자가 주기적으로 나오는 것을 확인할 수 있다.
따라서 테이블에 A+B의 계산 결과를 추가합니다.12시간마다 한 번씩 변하기 때문에 A+B를 12로 나눈 나머지를 더해 보자.이렇게 되면 나머지가 0일 때는 시간이 일치하지 않지만 다른 시간은 일치한다.따라서 A+B를 12여수로 0으로 나누면 12로 대답하고, 그렇지 않으면 A+B로 12여수로 나누어 프로그램을 만든다.
![](https://s1.md5.ltd/image/d0885270156b1c74b8c2a851767263b2.png)
장소를 가리지 않고 답을 주는 방법을 생각해 보자.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)
채점 사이트에 제출하는 프로그램 삽화
슬라이드에 사용된 아트웍은 모두 "조급한 사람"의 소재입니다.
Reference
이 문제에 관하여([도해해설] 조이 2021-2022 1차 예선 2차 문제 2단침), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takeaki-kando/items/e646af36287b0cbb8248텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)