
2025.03.14
크래프톤 정글에서는 TIL 혹은 WIL 작성하는 것을 권장한다고 한다.
미니 프로젝트 이후 5일차부터 TIL을 작성해보겠다
공부하면서 새롭게 깨달은 점을 끄적이려고 한다.
백준문제를 맞추더라도 채점 현황에서 다른 사람 코드를 보면 나랑 다르게 더 깔끔하게 푸시더라.
그거 보면서 여러가지 깨닫는다.
컴퓨터 시스템 1.4장 까지 읽음 추후에 내용 정리해서 업데이트 해야지.
import sys
input = sys.stdin.readline
input = sys.stdin.readline 함수를 할당
input = sys.stdin.readline() <-- 이렇게하면 input이라는 변수에 readline 해버림
ex) a = input().strip() <- 개행 문자 제거
map할때 split()으로 나누면 자연스레 개행문자가 제거
map(int,input().split())
함수 할당했으니까 쓸땐 ()
map() 함수 -> lazy evaluation 방식의 iterator 객체
필요할때 그때그때 꺼내 쓴다... 그리고 한번 쓰면 소모된다
파이썬 print() 개행(줄바꿈)(end='\n') 기본으로 포함
print(_,end='') 변경하면 줄바꿈 사라짐
파이썬 자리수 반올림 round(숫자,자리수)
자리수 채워주기 f{:.3f} <- 소수 세자리수 까지 채워준다
문자열의 count함수 리스트,문자열 등 iterable 한 자료형에서 개수를 반환해줌
변수.count('찾을 요소')
def solve(a):
return sum(a)
def solve(a: list) -> int:
return sum(a)
위처럼 자료형에 대한 정보를 넘겨 줄 수 있음
print(ord("A"))
print(ord("B"))
print(ord("C"))
# 65
# 66
# 67
print(chr(65))
print(chr(66))
print(chr(67))
# A
# B
# C
에라토스테네스의 체를 이용하면 쉽게 풀 수 있다더라.
import sys
input = sys.stdin.readline
def is_prime(num):
if num == 1:
return False
elif num == 2:
return True
for i in range(2,num):
if num % i == 0:
return False
return True
입력받는 수를 소수인지를 검증할때 나눌때 나머지가 있느냐를 직접 검증했는데
입력받는 num의 제한이 10000이기 때문에
에라토스테네스의 체를 사용하면 소수인지 효율적으로 찾아낼 수 있다.
# 에라토스테네스의 체
prime = [True for i in range(10001)]
prime[0] = False
prime[1] = False
for i in range(2, int(math.sqrt(10000))+1):
if prime[i] == False:
continue
for j in range(i*2, 10000, i):
# i의 배수인 j는 소수가 아니다
prime[j] = False
재귀함수는 생각을 달리하자
만약 5개의 탑을 옮기려면 위 4개를 옮기고 한번 옮기고 다시 4개를 옮기면 된다.
그럼 4개를 옮기려면? 위 3개를 옮기고 한번 옮기고 다시 3개를 옮기자
이런 반복 ...
같은 모양이 반복되는 것을 볼 수 있다.
그럼 탑의 위치를 어떻게 찍어낼 수 있을까?
def hanoi(n, start, sub, end):
if(n == 1): #종료조건
print(start, end)
return
hanoi(n-1, start, end, sub) #처음 n-1만큼 목적지가 아닌 sub으로 start ->sub
hanoi(1, start, sub, end) #맨 아래판 하나를 목적지로 start -> end
hanoi(n-1, sub, start, end) #sub -> end
재귀함수에 대해서 다시 한번 깨달음을 얻었다.
재귀함수 너무 어렵다. 이론 공부를 더하고 문제를 풀어야 할 것 같다.
내일도 화이팅