Code/function snippet7 파이썬 객체와 메모리 | 참조복사, 얕은복사, 깊은복사 (copy 라이브러리) Python에서는 변수와 객체가 메모리에 어떻게 저장되는지에 대해 처음부터 깊이 배우는 경우가 많지 않다. 나도 예전에 풀스택 쪽을 잠깐 본 적이 있었는데, 그 때 JavaScript(자바스크립트)를 배우면서 메모리 할당과 데이터 저장 방식에 대해 배우게 되었다. JavaScript는 원시 데이터 타입과 참조 타입을 구분하고, 얕은 복사와 깊은 복사의 차이도 눈에 띄게 다르게 작용하기 때문에 메모리 참조에 대해 더 많은 주의가 필요하다.그러나 Python은 메모리 관리를 자동으로 처리해 주고, 변수와 객체는 직관적으로 사용할 수 있도록 설계되었기 때문에, 복잡한 메모리 관리를 사용자가 직접 다룰 일이 거의 없고, 따라서 초보자가 쉽게 접근할 수 있는 편이다.이러한 차이는 언어의 철학과 설계 방식에서도 기.. 2024. 11. 6. python | numpy 라이브러리를 이용하여 최대공약수, 최소공배수 구하기 (gcd, lcm) 코딩테스트 문제를 해결할 때면 2개 이상의 정수의 최대공약수 또는 최소공배수를 구해야 하는 경우가 종종 있습니다. 파이썬에서 최대공약수와 최소공배수는 넘파이 라이브러리를 이용해서 아주 간단하게 구해낼 수 있는데요. 먼저 함수를 소개해 드리기 전에, 최대공약수와 최소공배수를 영어로 뭐라고 부르는지 알고 넘어갈게요. gcd : greatest common division (최대공약수) lcm : lowest common multiple (최소공배수) 이런 간단한 영어 정도는 숙지해 두시면 좀더 직관적으로 쉽게 프로그래밍하실 수 있어요 :-) [1] 최대공약수 구하기 import numpy as np 먼저 넘파이 라이브러리를 임포트해줍니다. np.gcd(12, 20) # 4 np.gcd(30, 45) # 15.. 2024. 4. 8. python | 연속 공백 여러개 분리하기, split 함수 대신 정규식(re) 활용하기! 문자열을 분리하고 변형해야 하는 코딩 테스트 문제에서 공백 문자가 연속으로 나오는 경우가 많이 있습니다. 공백을 기준으로 문자열을 분리할 때 자연스럽게 split() 함수를 사용하게 되는데, 이 경우 연속 공백을 상실하게 되는 문제점이 발생합니다. 연속 공백을 유지하면서 문자열을 분리하여 리스트로 만들기 위해 정규식(regular expression)을 사용할 수 있습니다. https://school.programmers.co.kr/learn/courses/30/lessons/12951# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 프로그래머스 Jade.. 2024. 4. 8. python | 재귀함수 (팩토리얼 예제) 자기 자신을 리턴하는 재귀함수! 현업에서 쓸 일은 거의 없지만, 코딩 테스트에서 자주 등장한다. 파이썬의 재귀함수에는 한계치(limit)가 있으므로 주의해서 사용한다. 기본 형태 def recursive_func(): print('재귀함수 만세!!!!!!💛') return recursive_func() recursive_func() >>> RecursionError : maximum recursion depth exceeded 어쩌구 발생 ^_^... 따라하지 마시오... 기본 예제 - 팩토리얼 함수 만들기 (1) while 반복문 이용하기 def factorial_while(n): i = 1 answer = 1 while i 2024. 4. 1. python | 소수 판별 함수 작성하기 (prime number) 소수 여부를 판별할 수 있는 함수를 작성해 보자. 참고로 숫자 1은 소수가 아니다! def prime_num_classify(n): if n == 1: return False elif n in [2, 3, 5, 7]: return True elif n % 2 == 0 or n % 3 == 0: return False else: for i in range(3, n // 2): if n % i == 0: return False return True 위 코드는 정상 작동하지만 숫자가 커질수록 비효율성이 커진다. chatGPT는 위 코드를 100점 만점에 50점으로 평가하였으며 이를 개선할 수 있는 90점짜리 최적화 코드를 제공하였다. else 이후 부분을 주목해서 보자. def prime_num_classif.. 2024. 4. 1. python | 약수(factor) 리스트업 함수 작성하기 + 메모화 (memorization) ver 01 (메모화 x) def factor_extractor(n): if n == 1: return [1] if n == 2: return [1, 2] if n == 3: return [1, 3] factor_list = [1] for num in range(2, n): if n % num == 0: factor_list.append(num) factor_list.append(n) return factor_list 문제점 : 반복되는 계산 개선 방법 : 메모화(Memorization) ver 02 (메모화 o) def factor_extractor(n, memo = {1 : [1], 2 : [1, 2], 3 : [1, 3]}): if n in memo: return memo[n] factor_list.. 2024. 4. 1. 이전 1 2 다음