자료구조 알고리즘 공부 2주차

파이썬

파이썬 자료구조 알고리즘 공부 2주차에 대한 글을 써보려고 한다.

이번주의 주제는 반복 알고리즘(for, while)이였다.

어디선가 한 번은 다 배운 내용들이지만 가물가물 하였고,

실습을 하나씩 따라 적어보고 책과는 또다른 방법으로 코딩도 해보니 재미있었다.

#5일차

#합 'while' 활용
print('1부터 n까지 합')
n = int(input('값을 입력하세요 :'))

sum = 0
i = 1

while i<=n:
    sum +=i
    i+=1
print(f'1 부터 {n}까지의 합은 {sum}')

#팩토리얼 'while' 활용
print('n 팩토리얼')
n = int(input('값을 입력하세요 :'))

fac = 1
i=1

while i<=n :
    fac *= i
    i+=1

print(f'{n} 팩토리얼은 {fac}입니다.')

#합 'for' 활용
print('1부터 n까지의 합')
n = int(input('값을 입력하세요 :'))

sum = 0
for i in range(1, n+1):
    sum = sum+i
    
print(f'1부터 {n}까지의 합은 {sum}입니다.')

#팩토리얼 'for' 활용
print('n 팩토리얼')
n = int(input('값을입력하세요 :'))

fac = 1
for i in range(1, n+1):
    fac = fac * i
    
print(f'{n} 팩토리얼은 {fac}입니다.')
#6일차

#1부터 정수합
n = int(input('값을 입력하세요 :'))

sum = n*(n+1)//2

print(f'1부터 {n}까지 합은 {sum}입니다')

#특정구간 정수합
print('a 부터 b까지 정수합')
a= int(input('a값을 입력하세요 :'))
b= int(input('b값을 입력하세요 :'))

if a>b :
    a,b = b,a

sum = 0
for i in range(a, b+1):
    sum = sum+i
    
print(f'{a}부터 {b}까지 합은 {sum}입니다.')

#특정구간 정수합 'if' 활용
print('a 부터 b까지 정수합')
a= int(input('a값을 입력하세요 :'))
b= int(input('b값을 입력하세요 :'))

if a>b:
    a,b = b,a

sum = 0
for i in range(a,b+1):
    if i==b :
        print(f'{i}=', end='')
    else :
        print(f'{i}+', end ='' )
    sum = sum+i

print(sum)

# +- 번갈아 출력
print('+와-를 번갈아 출력합니다')
n = int(input('몇 개를 출력할까요?'))

for i in range(n):
    if i%2 :
        print('-', end='')
    else :
        print('+', end='')
#7일차

# +- 번갈아 출력 최적화
print('+와 -를 번갈아 출력')
n=int(input('몇 개를 출력할까요? :'))

for i in range(n//2):
    print('+-', end='')
if n%2 :
    print('+')
    
print()

# * 출력 및 줄바꿈1
print('*을 출력합니다.')
n = int(input('몇 개를 출력할까요?'))
w = int(input('몇 개마다 줄바꿈할까요?'))

for i in range(n):
    print('*', end='')
    if i % w == w-1:
        print()

# * 출력 및 줄바꿈2
print('*을 출력합니다.')
n = int(input('몇 개를 출력할까요?'))
w = int(input('몇 개마다 줄바꿈할까요?'))

for i in range(n//w):
    print('*' * w)
rest = n % w
if rest:
    print('*' * rest)

#조건 다시 묻기
print('1부터 n까지 정수합')

while True:
    n = int(input('n을 입력하세요:'))
    if n>0:
        break

sum=0
for i in range(1,n+1):
    sum += i
    
print(f'1부터 {n}까지 정수 합은 {sum}')

#직사각형 넓이 구하기
area = int(input('직사각형 넓이를 입력하세요 :'))

for i in range(1,area+1):
    if i * i > area : break
    if area % i : continue
    print(f'{i}*{area//i}')
#8일차

#난수생성
import random

n=int(input('난수 개수를 입력하세요:'))

for i in range(n):
    r = random.randint(10,99)
    print(r, end=' ')
    if r == 13:
        print('\n 프로그램을 중단합니다')
        break
else:
    print('\n 난수 생성을 종료합니다')
    
#양수 입력받기
print('두 자리 양수를 입력하세요:')
while True:
    n = int(input('값을 입력하세요:'))
    if n <10 or n>100:
        print('두자리 양수가 아닙니다')
    else : break

print(f'입력받은 양수는 {n}입니다')

#구구단
print('구구단')

for i in range(1,10):
    for j in range(1,10):
        print(f'{i*j:3}', end='')
    print()

# *로 직각삼각형 만들기1
print('왼아래가 직각인 삼각형')
n = int(input('아래 변의 길이를 입력하세요:'))

for i in range(1,n+1):
    print('*' * i)

# *로 직각삼각형 만들기2
print('오른아래가 직각인 삼각형')
n = int(input('아래 변의 길이를 입력하세요:'))

for i in range(1,n+1):
    print(' ' * (n-i), '*' * i )

# *로 직각삼각형 만들기3
print('오른아래가 직각인 삼각형')
n = int(input('아래 변의 길이를 입력하세요:'))

for i in range(n):
    for j in range(n-i-1):
        print(' ' , end='')
    for k in range(i +1):
        print('*', end='')
    print()

# 파이썬 식별번호 개념
print('식별번호를 출력합니다.')
for i in range(1,10):
    print(f'{i}의 식별번호는 {id(i)}입니다')

 

2주차 느낌 :

계획한 진도를 맞출 수 있어 좋았다.

하지만 생각보다 퇴근 후에 공부를 하는 것이 쉽지않다라는 것을 또 한번 느꼈다.

이제는 웜업을 끝내고 본 게임을 들어갈 것 같다

다음주도 화이팅이다.