반응형
밑의 링크는 CodeUp에서의 문제 링크입니다.
[기초-종합] 함께 문제 푸는 날(설명)(py)
python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용
codeup.kr
주의해야 할 점
문제 설명의 내용대로 최소공배수를 사용해서 풀 수도 있습니다.
그런데 최소공배수를 구하기 위해 유클리드 호제법을 사용하며 아무 문제없지만,
lcm 함수를 사용하면 통과를 할 수 없을 것입니다.
CodeUp에서 파이썬 버전이 3.8이기 때문입니다.
lcm 함수는 3.9 버전에서부터 업데이트되었습니다.
밑의 링크는 제 블로그에 있는 lcm 함수에 대한 포스팅입니다.
여기에서도 파이썬 버전과 관련된 내용이 있으므로 참고해 보시면 됩니다.
[Python] lcm 함수 : 최소공배수
2021.06.17 - [프로그래밍/Python] - [Python] gcd 함수 : 최대공약수 [Python] gcd 함수 : 최대공약수 알고리즘 문제들을 풀다 보면 누구나 한 번쯤은 최대공약수, 최소공배수를 구해야 되는 문제를 만날 것입
brightnightsky77.tistory.com
생각한 풀이 과정
- 인원 3명의 방문 주기를 공백을 두고 입력합니다. 각각 정수형으로 변환하고 변수 cycle1, cycle2, cycle3에 넣어줍니다.
- 1일부터 차례로 증가하면서 각 인원들의 방문 주기와 비교해볼 것입니다. 1일부터 시작하므로 변수 day를 만들고 1로 초기화합니다.
- 계속 반복하는 반복문을 만들어줍니다.
- 현재 날짜에서 각 인원들이 방문하는지를 알아봅니다. 현재 날짜를 각 인원들의 방문 주기로 나누어 나온 나머지가 0이라면 방문하는 날짜입니다.
- 만약 모든 인원들에 대한 나머지가 0이라면, 모든 3명이 모두 방문하는 날이므로 현재 날짜인 day의 값을 출력합니다. 반복문을 탈출합니다.
- 모든 인원들에 대한 나머지가 하나라도 0이 아니라면 day에 1을 더해 다음 날짜로 넘어갑니다.
제출한 파이썬 코드
# readline을 사용하기 위해 import합니다.
from sys import stdin
# 인원 3명의 방문 주기를 공백을 두고 입력합니다.
# 각각 정수형으로 변환합니다.
cycle1, cycle2, cycle3 = map(int, stdin.readline().split())
# 3명이 다시 모두 함께 방문해 문제를 풀어보는 날을 저장할 변수를 선언합니다.
# 1일부터 차례로 증가시킬 것이므로 1부터 시작합니다.
day = 1
# 계속 반복하는 반복문을 선언합니다.
while True:
# day에 저장된 현재 날짜에 인원 3명이 모두 방문한 날이라면,
# 즉, day의 값을 각 인원의 방문 주기로 나누었을 때 나머지가 모두 0이라면
if day % cycle1 == 0 and day % cycle2 == 0 and day % cycle3 == 0:
# 3명이 다시 모두 함께 방문하는 날이므로 day의 값을 출력합니다.
print(day)
# 반복문을 탈출합니다.
break
# 3명이 모두 함께 방문하는 날이 아니면 다음 날을 생각해야함로 day에 1을 더합니다.
day += 1
제출 결과
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
※ 더 효율적이고 빠른 정답을 환영합니다.
반응형
댓글