본문 바로가기
프로그래밍/코드업 파이썬 기초 100제

코드업 파이썬 기초 100제 6091번(100제 91번째 문제)

by 리드민 2023. 2. 7.
반응형

[1] 코드업 파이썬 기초 100제
100제 91번째 문제

[2] 문제
온라인 채점시스템에는 초등학생, 중고등학생, 대학생, 대학원생,
일반인, 군인, 프로그래머, 탑코더 등 아주 많은 사람들이 들어와 문제를 풀고 있는데,
실시간 채점 정보는 메뉴의 채점기록(Judge Status)을 통해 살펴볼 수 있다.
자! 여기서...잠깐..
같은 날 동시에 가입한 3명의 사람들이 온라인 채점시스템에 들어와 문제를 푸는 날짜가
매우 규칙적이라고 할 때, 다시 모두 함께 문제를 풀게 되는 그날은 언제일까?
예를 들어 3명이 같은 날 가입/등업하고, 각각 3일마다, 7일마다, 9일마다
한 번씩 들어온다면, 처음 가입하고 63일 만에 다시 3명이 함께 문제를 풀게 된다.
갑자기 힌트?
왠지 어려워 보이지 않는가?
수학에서 배운 최소공배수를 생각한 사람들도 있을 것이다. 하지만, 정보에서 배우고 경험하는
정보과학의 세상은 때때로 컴퓨터의 힘을 빌려 간단한 방법으로 해결할 수 있게 한다.
아래의 코드를 읽고 이해한 후 도전해 보자.
day는 날 수, a/b/c는 방문 주기이다.
...
d = 1
while d%a!=0 or d%b!=0 or d%c!=0 :
  d += 1
print(d)
...

물론, 아주 많은 다양한 방법이 있을 수 있다.
정보과학의 문제해결에 있어서 정답은?
하나가 아니라 주어진 시간/기억공간으로 정확한 결과를 얻을 수 있는 모든 방법이다.
따라서, 모든 문제들에는 정답이 하나뿐만이 아니다.
새로운, 더 빠른, 더 간단한 방법을 다양하게 생각해보고 여러가지 방법으로 도전해 볼 수 있다.

1. 입력
같은 날 동시에 가입한 인원 3명이 규칙적으로 방문하는,
방문 주기가 공백을 두고 입력된다. (단, 입력값은 100이하의 자연수이다.)

2. 출력
3명이 다시 모두 함께 방문해 문제를 풀어보는 날(동시 가입/등업 후 며칠 후?)을 출력한다.

3. 입력 예시
3 7 9

4. 출력 예시
63

[3] 정답
1. 해설 미포함

a, b, c = input().split()
a = int(a)
b = int(b)
c = int(c)
d = int(1)
while(True):
    if d%a==0 and d%b==0 and d%c==0:
        break 
    d = d+1
print(d)


2. 해설 포함

a, b, c = input().split()
# 공백을 기준으로 값을 3개 입력받아 변수 a, b, c에 각각 저장한다.
a = int(a)
# 변수 a에 저장된 값을 형 변환한 후 변수 a에 다시 저장한다.
b = int(b)
c = int(c)
d = int(1)
while(True):
# while 반복문
    if d%a==0 and d%b==0 and d%c==0:
    # if 조건문 만약 d%a==0, d%b==0, d%c==0 3개의 연산식이 모두 True라면 밑의 코드를 실행시킨다.
        break
        # while 반복문을 빠져나온다.
    d = d+1
    # 변수 d에 저장된 값에서 1을 더하고 다시 변수 d에 저장한다.
print(d)
# 변수 d에 저장된 값을 출력한다.

input 함수는 값을 입력받는 함수이다.

int 함수는 변수에 저장된 값을 int(정수형)으로 변환한 후 출력하는 함수이다.

while문은 반복문이다. 조건식이 True라면 계속 반복된다.

if 문은 조건문이다. 조건식이 True이면 if문 안의 코드가 실행된다.

break 문은 while문을 빠져나오는 명령어이다.

print 함수는 값을 출력하는 함수이다.

반응형