21.1.27

커피 내리는 그냥 사람·2021년 1월 27일
0

백준 퀴즈 도전

목록 보기
2/7

(5086)

while True:
  x, y = map(int, input().split())
  if x + y  > 0:
    if x % y == 0:
      print("multiple")
    elif y % x == 0:
      print("factor")
    else:
      print("neither")
  else:
    break
  • 먼저 input 되는 수가 0, 0에서 끝날 수 있게 while~break문을 해준다.(몰라서 찾아봤던 부분)
  • 배수, 약수, 아닌 것에 대한 조건은 조건문을 이용해서 판별해준다.

(1037)

number = int(input())
a= list(map(int, input().split())) # 꼭 map으로만 안 해도 됨. 리스트로 만들어 버리고 max,min 씀.
a_max = max(a)
a_min = min(a)
N = a_max * a_min
print(N)
  • 원래 수는 약수들의 곱이다.
  • 그러니 제일 큰 약수와 제일 작은 약수를 곱하면 원래 값이 나온다.
  • 근데 문제에 조건에서 1과 자기 자신을 뺀 값이라 했다. 그러므로 작은 값과 큰 값은 얼추 나왔다. 그리고 곱하면 항상 그 수가 나온다.

(2609)

a, b = map(int, input().split())
x = set(i for i in range(1, a+1) if a % i == 0)
y = set(i for i in range(1, b+1) if b % i == 0)
w = max(set.intersection(x, y))
z = int((a * b) / w)
print(w)
print(z)

최대공약수 : 자기 자신까지의 인자들로 나눈 수 중 나머지가 0인 것
최소공배수 : 구하려는 두 수의 곱에서 최대공약수를 나눈 것. :
유클리드 호제법

(1934) 유클리드 호제법을 함수로 응용했어야 빨랐다.

참고 블로그

그 전에 4번의 시간초과는 아래 블로그에 나온 방식을 모두 사용했을 때였다.(첫 번째는 2609번 응용해서 했는데.. 유클리드 호제법이긴 했는데 시간이 너무 오래 걸린 케이스)

number = int(input())
for i in range(number):
  a, b = map(int, input().split())

  def UC(a, b): # 최대공약수 구하는 함수
    while(b):
      a, b = b, a%b
    return a
  def UC2(a, b): # 최대공약수 구한거로 최소공배수 구하기
    result = (a*b) // UC(a,b)
    return result
  print(UC2(a, b))

(3036)

from fractions import Fraction

number = int(input())
a = list(map(int, input().split()))
for i in a[1:]:
  answer = Fraction(i, a[0])
  print(answer.denominator, '/', answer.numerator, sep = '')
  • 먼저 for문 이용해서 순서대로 바퀴수 계산 : 보니까 큰 바퀴를 분모로, 작은 바퀴를 분자로 놓으면 답이 나오는 알고리즘이었음.
  • 파이썬에서 분수가 나오게 하려면 위처럼 모듈을 임포트 해줘야 함.
  • 임포트한 분수가 분모와 분자가 바뀌어 있음. 일단 변수를 지정하여 답값을 계산한 후 프린트 할 때는 메서드를 사용해서 분자와 분모를 바꿔줌(deno~분모 numer~분자)

(11050)

이항계수를 파이썬에...일단 이항계수는 고등학교 때 배웠는지 안 배웠는지 기억이 가물가물하다. 일단 공식이므로 위키피디아에서 하나 긁어왔고 그거로 푼 분 풀이로 그대로 풀었다. 팩토리얼을 임포트 하려면 math를 가져와야 한다.

이항계수

import math

a, b = map(int, input().split())

answer = math.factorial(a) // math.factorial(a-b) // math.factorial(b)

print(answer)
profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글

관련 채용 정보