✅ python basic algorithm

⭐최대공약수

a = 4
b = 10

for i in range(min(a,b), 0, -1):
    if a%i==0 and b%i==0:
        print(i)      #2
        break

✔ idea
a,b 중 작은 값부터 1까지 -1씩(증가 값) ex) 4,3,2,1
a와 b 모두 나누어 떨어지는 약수 찾기 (가장 큰 값인 4부터 들어가고 2 => break)

⭐최소공배수

 for i in range(max(a,b), (a*b)+1):
	if i%a==0 and i%b==0:
 		print(i)      #20
        break

✔ idea
idea a,b 중 큰 값부터 a*b까지 +1씩(증가 값) ex) 10,11,12,,,40
a와 b로 모두 나누어 떨어지는 공배수 중 가장 작은 값 찾기 (20 => break)

✔ idea
math module 활용

from math import gcd   

def lcm(a,b) :
     return a*b // gcd(a,b)

print(gcd(4,10),"\n")
print(lcm(4,10))

⭐약수의 개수와 덧셈

약수의 개수와 덧셈

def solution(left, right):
    ans = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5:
            ans -= i
        else:
            ans += i
    return ans

✔ idea 약수가 홀수개인 모든 수는 제곱수
1 : 1
4 : 1,2,4 (3개)
9 : 1,3,9 (3개)
16 : 1,2,4,8,16 (5개)

⭐구구단

for i in range(2,10):
    print("========"+str(i)+"단"+"========")
    for j in range(1,10):
        print(i,'*', j, '=', i*j)

⭐별 찍기

for i in range(5):      #0 1 2 3 4 (총 5번)
    for j in range(i+1):      # 1 2 3 4 5 번 찍기
        print('*',end="")      # '*' 개행 없이 찍기
    print()

⭐별 찍기 (reversed)

for i in range(5):
    for j in range(i):
        print(' ',end="")      # 원래 별 찍는 만큼 공백 주기
    for j in range(5-i):
        print('*',end="")      # 5 4 3 2 1 번 찍기
    print()

⭐stack / heap / que

  • stack : 선형 자료 구조로 데이터를 쌓아 올림. stack에 값을 넣을 때는 push, 꺼낼 때는 pop 연산을 수행하며 top에 있는 값을 확인하려면 peek 연산을 사용함.
  • queue : 선형 자료구조로 먼저 들어간 데이터가 먼저 나오는 FIFO 방식을 취함. 맨 앞은 front, 맨 뒤는 rear / rear에서 이루어지는 삽입 연산은 enqueue, front에서 이루어지는 삭제 연산은 dequeue
  • heap : 완전 이진트리를 기초로 하는 자료구조로 여러 값 중 최댓값이나 최솟값을 빠르게 찾아내는 데에 유용함. 최대힙(Max heap)과 최소힙(Min Heap)으로 나누어짐.
profile
developer / not moving for fortune, only aiming for clear sense of purpose. That's all.

0개의 댓글