[백준] Python 알고리즘 연습 Day6
주말이라 시간이 남아 알고리즘 문제풀이에 시간을 더 들였다.
하다보니깐 재미들려서 많이 한 느낌이다. 우선 1차 목표로 두었던 단계별로풀어보기의 재귀까지 풀었으므로 이제는 백준 알고리즘 기초1에 포함되어있는 문제를 위주로 풀어나가며 단계를 올려볼 생각이다. 아직 푼 문제가 많지 않아서 등급은 아직 실버지만 꾸준히 연습해서 골드이상까지는 올려보고 싶다.
재귀에 대한 부분이 이해하는데 시간이 걸렸다. 익숙해져야할 필요성이 있어보인다.
백준 4153번 직각삼각형
while True:
a,b,c = map(int,input().split())
if (a==0 and b==0 and c==0):
break
else:
if a**2 == b**2 + c**2 or b**2 == a**2 + c**2 or c**2 == a**2 + b**2:
print('right')
else:
print('wrong')
백준 3053번 택시 기하학
import math
R = float(input())
ucli_area = math.pi*(R**2)
taxi_area = 2*(R**2)
print('%.6f' %ucli_area)
print('%.6f' %taxi_area) # 소수점 제한 방법
백준 1002번 터렛
T = int(input())
for i in range(T):
x1,y1,r1,x2,y2,r2 = map(int,input().split())
total_len = ((x1-x2)**2 + (y1-y2)**2)**(1/2)
if total_len == 0 and r1 == r2: # 동심원
print(-1)
elif abs(r1-r2) == total_len or r1+r2 == total_len: # 내접, 외접
print(1)
elif abs(r1-r2) < total_len < r1+r2 :
print(2)
else:
print(0)
백준 10872번 팩토리얼
#재귀함수를 이용할 것
N = int(input())
def factor(x):
if x<1:
return 1
return x*factor(x-1)
if N==0 :
print(1)
else:
print(factor(N))
백준 10870번 피보나치 수 5
#재귀함수 이용할 것
n = int(input())
def Fibo(x):
if x==0:
return 0
elif x==1:
return 1
return Fibo(x-1)+Fibo(x-2)
print(Fibo(n))
백준 2447번 별 찍기 - 10
# 재귀함수 패턴
# list를 이용해보자
# 상당히 막혀서 자료를 좀 찾아봤다
N = int(input())
def draw_star(n) :
global Map # 전역변수
if n == 3 :
Map[0][:3] = Map[2][:3] = [1]*3 # 첫 번째 행, 세 번째 행 1
# [1] * 3 = [1, 1, 1]
Map[1][:3] = [1, 0, 1] # 두 번째 행 0
return
else:
a = n//3
draw_star(n//3) # 재귀함수
for i in range(3) : # 행 3번반복
for j in range(3) : # 열 3번반복
if i == 1 and j == 1 : # 중복 제외
continue
for k in range(a) : # a*i+k행에서 a*j,a*j+1열까지 채움
Map[a*i+k][a*j:a*(j+1)] = Map[k][:a] # 첫번째 패턴에서 복사해옴
# Map을 0으로 초기화
Map = [[0 for i in range(N)] for j in range(N)]
draw_star(N)
for i in Map :
for j in i :
if j==1 :
print('*', end = '')
else :
print(' ', end = '')
print()
백준 11729번 하노이 탑 이동 순서
#하노이의 탑
N = int(input())
'''
hanoi(3, A, C, B)
# N-1개의 원반을 A에서 B로
# N-1개의 원반을 B에서 C로
hanoi(2, A, B, C) # 2개의 원반을 B로, 1개의 원반을 C로 (경유)
hanoi(2, B, C, A) # B의 두개의 원반을 C로 (이 때 A경유)
'''
def hanoi(N, start, to, via): # N : 개수 Start: 출발점 to:도착점 via:경유점
if N == 1:
print(start, to)
else:
hanoi(N-1, start, via, to)
print(start, to)
hanoi(N-1, via, to, start)
print(2**N-1)
hanoi(N, 1, 3, 2)
Author And Source
이 문제에 관하여([백준] Python 알고리즘 연습 Day6), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@colacan100/백준-Python-알고리즘-연습-Day6저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)