본문 바로가기
알고리즘/CodeUp PS

[CodeUp][Python 기초 100제] 6091번 : [기초-종합] 함께 문제 푸는 날

by 빛밤하늘 2021. 8. 7.
반응형

밑의 링크는 CodeUp에서의 문제 링크입니다.

 

[기초-종합] 함께 문제 푸는 날(설명)(py)

python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용

codeup.kr

 

 

 

 

 

 

 

주의해야 할 점

문제 설명의 내용대로 최소공배수를 사용해서 풀 수도 있습니다.

그런데 최소공배수를 구하기 위해 유클리드 호제법을 사용하며 아무 문제없지만,

lcm 함수를 사용하면 통과를 할 수 없을 것입니다.

CodeUp에서 파이썬 버전이 3.8이기 때문입니다.

lcm 함수는 3.9 버전에서부터 업데이트되었습니다.

 

CodeUp에서 파이썬 버전

 

밑의 링크는 제 블로그에 있는 lcm 함수에 대한 포스팅입니다.

여기에서도 파이썬 버전과 관련된 내용이 있으므로 참고해 보시면 됩니다.

 

[Python] lcm 함수 : 최소공배수

2021.06.17 - [프로그래밍/Python] - [Python] gcd 함수 : 최대공약수 [Python] gcd 함수 : 최대공약수 알고리즘 문제들을 풀다 보면 누구나 한 번쯤은 최대공약수, 최소공배수를 구해야 되는 문제를 만날 것입

brightnightsky77.tistory.com

 

 

 

생각한 풀이 과정

  1. 인원 3명의 방문 주기를 공백을 두고 입력합니다. 각각 정수형으로 변환하고 변수 cycle1, cycle2, cycle3에 넣어줍니다.
  2. 1일부터 차례로 증가하면서 각 인원들의 방문 주기와 비교해볼 것입니다. 1일부터 시작하므로 변수 day를 만들고 1로 초기화합니다.
  3. 계속 반복하는 반복문을 만들어줍니다.
  4. 현재 날짜에서 각 인원들이 방문하는지를 알아봅니다. 현재 날짜를 각 인원들의 방문 주기로 나누어 나온 나머지가 0이라면 방문하는 날짜입니다.
  5. 만약 모든 인원들에 대한 나머지가 0이라면, 모든 3명이 모두 방문하는 날이므로 현재 날짜인 day의 값을 출력합니다. 반복문을 탈출합니다.
  6. 모든 인원들에 대한 나머지가 하나라도 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

 

 

 

제출 결과

결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글