오늘은 어제 배운 for문에 이어 range 자료형까지 배웠다. range를 활용한 복잡한 for문 알고리즘 문제를 풀다 보니 약간의 뇌정지가 왔지만, 원리를 이해하고 나니까 조금씩 풀이법이 보여 재미있었다.
먼저 for문에서 딕셔너리를 활용하는 방법부터 시작하였다.
person = {
"name" : "taehyun",
"age" : "27",
"job" : "student"
}
# 기본적인 활용
for key in person:
print(key, person[key])
# name taehyun
# age 27
# job student
# value만 가져오기
for value in person.values():
print(value)
# taehyun
# 27
# student
# item 가져오기 (언패킹 가능)
for key, value in person.items():
print(key, value)
# name taehyun
# age 27
# job student
이후에는 range 함수에 대해 배웠다.
range(start, end, step) 이러한 구조를 이루고 있으며, start와 step을 생략하여 end 값만으로 사용하기도 함print(list(range(1, 5)))
# [1, 2, 3, 4]
for i in range(1, 5):
print(i)
for i in [1,2,3,4]:
print(i)
# 1
# 2
# 3
# 4
for i in range(5):
print(i)
# 0
# 1
# 2
# 3
# 4
for i in range(5):
print("안녕하세요")
# 안녕하세요
# 안녕하세요
# 안녕하세요
# 안녕하세요
# 안녕하세요
for i in range(0, 6, 2):
print(i)
# 0
# 2
# 4
# 역순 반복
for i in range(5, 0, -1):
print(i)
# 5
# 4
# 3
# 2
# 1
range 자료형이 for문에서 어떻게 작동하는지 이해한 뒤, 반복을 제어할 수 있는 루프 제어문에 대해 배웠다.
for i in range(10):
if i == 5:
break
print(i)
print("반복문 종료")
# 0
# 1
# 2
# 3
# 4
# 반복문 종료
for i in range(5):
if i == 2:
continue
print(i)
print("반복문 종료")
# 0
# 1
# 3
# 4
# 반복문 종료
for i in range(10):
pass
for i in range(5):
print(i)
else:
print("반복종료")
# 0
# 1
# 2
# 3
# 4
# 반복종료
# 이중 for문
for i in range(4):
for j in range(5):
print("😀", end=" ")
print()
# 😀 😀 😀 😀 😀
# 😀 😀 😀 😀 😀
# 😀 😀 😀 😀 😀
# 😀 😀 😀 😀 😀
for i in range(4):
for j in range(4):
print(f"{i},{j}", end=" ")
print()
# 0,0 0,1 0,2 0,3
# 1,0 1,1 1,2 1,3
# 2,0 2,1 2,2 2,3
# 3,0 3,1 3,2 3,3
for i in range(2,10):
print(f"[ {i}단 ]")
for j in range(1,10):
print(f"{i} x {j} = {i * j}")
print()
# [ 2단 ]
# 2 x 1 = 2
# 2 x 2 = 4
# 2 x 3 = 6
# 2 x 4 = 8
# 2 x 5 = 10
# 2 x 6 = 12
# 2 x 7 = 14
# 2 x 8 = 16
# 2 x 9 = 18num = int(input("수를 입력해주세요 :"))
for i in range(1, num+1):
for j in range(i):
print("*", end=" ")
print()
# *
# * *
# * * *
# * * * *
# * * * * * num = int(input("수를 입력해주세요 :"))
for i in range(1, num + 1):
for j in range(num - i):
print(" ", end=" ")
for j in range(i):
print("*", end=" ")
print()
# *
# * *
# * * *
# * * * *
# * * * * * num = int(input("수를 입력해주세요 :"))
for i in range(1, num + 1):
for j in range(num - i):
print(" ", end=" ")
for j in range(2 * i - 1):
print("*", end=" ")
print()
# *
# * * *
# * * * * *
# * * * * * * *
# * * * * * * * * * 중첩 for문이 어떤 순서와 원리로 작동하는지 머리로는 이해되었지만, 이 원리를 응용해 알고리즘을 해결하는 것은 또 다른 문제인 것 같다...
마지막으로는 리스트 컴프리헨션에 대해 배웠다.
# for문
squares = []
for x in range(1,6):
squares.append(x ** 2)
print(squares)
# 리스트 컴프리헨션
squares_2 = [x ** 2 for x in range(1,6)]
print(squares_2)
# [1, 4, 9, 16, 25]
# [1, 4, 9, 16, 25]
colors = ["red", "blue"]
fruits = ["사과", "수박"]
pairs = [(color, fruit) for color in colors for fruit in fruits]
print(pairs)
# [('red', '사과'), ('red', '수박'), ('blue', '사과'), ('blue', '수박')]
반복문 관련 문제를 더 많이 풀어봐야 할 것 같다.
아직 이터러블의 활용도 연습을 많이 못했는데, 갈 길이 너무 멀게만 느껴진다..
주말간 복습을 열심히 해야겠다.