- point. 그리디 알고리즘 -> 규칙성을 찾아라
- 0~10 => 1 / 11~110 => 2 / 111~1110 => 3 / 1111~11110 =>4 ~~
- ex) n = 88
- 입력받는 정수의 길이를 1로 표시
- n이 일의 자리 정수라면 1
- n이 11보다 크거나 같다면 두 개의 스티커팩으로 표현 가능
- n이 11보다 작다면(10인 경우) 한 개의 스티커팩으로 표현 가능
N= input()
S = '1'*len(N)
if len(N) == 1:
print(1)
elif int(N) >= int(S):
print(len(N))
else:
print(len(N)-1)
- 무게가 양의 정수인 N개의 저울추가 주어질 때, 이 추들을 사용하여 측정할 수 없는 양의 정수 무게 중 최솟값을 구하는 프로그램을 작성하시오.
- 예를 들어, 무게가 각각 3, 1, 6, 2, 7, 30, 1인 7개의 저울추가 주어졌을 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값은 21이다.
- point. 그리디 알고리즘 -> 규칙성을 찾아라
- 현재까지의 합 + 1 보다 큰 값이 다음 인덱스에 저장된 수라면 이전의 추들로 무게를 구할 수 없다.
n, a = int(input()), sorted(list(map(int, input().split())))
ans = 0
for i in a:
if i <= ans +1:
ans += i
else:
break
print(ans+1)
단계별풀기 - 기본수학2
# 1002 터렛 (실버4)
- 조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오.
- 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
- point. 원과 원의 접점의 개수를 구하는 문제
- 두 원이 일치하는 경우 -> -1, 0
- 두 원이 한 점에서 만나는 경우(외접, 내접) -> 1
- 두 원이 만나지 않는 경우 -> 0
- 두 원이 두 점에서 만나는 경우 -> 2
t = int(input())
for i in range(t):
x1, y1, r1, x2, y2, r2 = map(int, input().split())
d = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5
rs = r1 + r2
rm = abs(r1 - r2)
if d == 0:
if r1 == r2:
print(-1)
else:
print(0)
else:
if d == rs or d == rm:
print(1)
elif d < rs and d > rm:
print(2)
else:
print(0)
단계별풀기 - 재귀
# 10872 팩토리얼 (브론즈 3)
- 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
def fac(n):
if n == 0:
return 1
elif n == 1:
return 1
return n * fac(n-1)
N = int(input())
print(fac(N))
# 10870 피보나치수 5 (브론즈2)
- 첫째 줄에 n번째 피보나치 수를 출력한다.
def f(n):
if n == 0:
return 0
elif n == 1:
return 1
return f(n-1) + f(n-2)
N = int(input())
print(f(N))
반응형
'알고리즘 > baekjoon' 카테고리의 다른 글
20210128_코테공부 (0) | 2021.01.28 |
---|---|
20210127_코테공부 (0) | 2021.01.27 |
20210125_코테공부 (0) | 2021.01.25 |
20210122_코테공부 (0) | 2021.01.22 |
20210121_코테공부 (0) | 2021.01.21 |