[CodeUp 기초 100제] 6091번 풀이 with 파이썬(python)

Jeony·2021년 9월 15일
0

codeup 기초 100제

목록 보기
91/98
post-thumbnail

문제

종합

온라인 채점시스템에는 초등학생, 중고등학생, 대학생, 대학원생,
일반인, 군인, 프로그래머, 탑코더 등 아주 많은 사람들이 들어와 문제를 풀고 있는데,

실시간 채점 정보는 메뉴의 채점기록(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 -2 1 8

출력 예시

-85

답안

모델 답안

a,b,c=input().split()
a=int(a)
b=int(b)
c=int(c)
d = 1
while d%a!=0 or d%b!=0 or d%c!=0 :
  d += 1
print(d)

내 답안

d1, d2, d3 = input().split()
d1, d2, d3 = int(d1), int(d2), int(d3)
theDay = 1

while theDay % d1 != 0 or theDay % d2 != 0 or theDay % d3 != 0:
    theDay += 1
print(theDay)

풀이

이번 문제는 갑자기 난이도가 높아졌어요. for me...😭
처음이 아니지만 힌트를 보고 풀었어요. 힌트를 봐도 처음에는 이해가 잘 가지 않아서 당황😨
그래도 계속 보니까 이해가 되더라고요ㅋㅋ
제가 이해한 것을 알려드릴께요!

입력: 3 7 9
문제를 쉽게 설명하면 "입력을 3 7 9 받았을 때 모두 동일한 숫자는 몇인가?"를 구하는 것이다.

3의 배수 (3 6 9 12 15 18 21 24 27 30 ... 60 63)
7의 배수 (7 14 21 28 35 42 49 56 63 70)
9의 배수 (9 18 27 36 45 54 63 72 81 90)

n % 3 != 0: 3의 배수가 아닌 것은 True, 3의 배수면 false.
n % 7 != 0: 7의 배수가 아닌 것은 True, 7의 배수면 false.
n % 9 != 0: 9의 배수가 아닌 것은 True, 9의 배수면 false.

곧, 저 셋 조건 중 하나라도 True가 되면 while문은 멈추고
계속 반복하면서 +1 카운트 하고 있었던 d는 63에서 멈춘다.

while d%a!=0 or d%b!=0 or d%c!=0 :

input(): 프롬프트를 띄워서 사용자의 입력 받을 수 있게 해준다.
(단, 입력 받은 것은 문자열로 저장된다. print(type()))으로 type() 괄호 안에 변수를 넣고 찍으면 정수인지, 문자열인지, 무슨 타입인지 확일 할 수 있다!)

int(n): 위의 input()에서 말했듯이 input으로 받은 값은 문자열로 저장된다.
산술을 하기 위해, 문자열을 정수로 변환시켜주는 int()를 써서 변환시켜준다.

while문: 조건이 True면 밑에 내용 실행!
while 조건식:
(들여쓰기칸) 실행문

while문은 조건식이 계속 맞도록 해주면 무한으로 반복할 수 있다!
ex)

while True
    print("ㅎㅎ")

멈추지 않는 이상 계속 반복

%: 수를 나눠서 나머지만 반환해주는 연산자
10 % 3 = 1
5 % 2 = 1

print(): 괄호 안의 내용을 출력!

profile
알고리즘으로 문제를 해결하자 (ʘ言ʘ╬)

0개의 댓글