본문 바로가기
  • AI 개발자가 될래요

Python35

[Python] "효율적 개발로 이끄는 파이썬 실천 기술" 책 중요 내용 정리 - 1편 "효율적 개발로 이끄는 파이썬 실천 기술" 책 중요 내용 정리 - 1편 이 글은 "효울적 개발로 이끄는 파이썬 실천 기술", 스야마 레이, 제이펍 을 읽으며 나에게 도움이 될 만한 중요한 내용을 정리한 글이다. https://www.yes24.com/Product/Goods/99123748 효율적 개발로 이끄는 파이썬 실천 기술 - 예스24 프로그래밍에 대한 지식은 어느 정도 있지만,파이썬은 잘 모르는 분들을 위한 실천적 입문서!『효율적 개발로 이끄는 파이썬 실천 기술』은 이런 분들을 위한 읽기 쉬우면서도 얕지 않은 입문 www.yes24.com 동적 타입 언어의 특징 (Python) 동적 타입 언어 - 장점: 코드 작성량이 적어 쉽게 쓸 수 있다. 컴파일이 필요하지 않다. - 단점: 실행 시 오버헤드가.. 2024. 1. 4.
[Python/Pytorch] 네트워크 파라미터 수 계산법 / #params 계산법 Python, Pytorch 네트워크 파라미터 수 계산법 / # params 계산법 PyTorch에서 네트워크 모델의 파라미터 개수를 세는 것은 비교적 간단하다. 1. 총 파라미터 수 계산하기 모델의 모든 파라미터(학습 가능한 파라미터와 학습 불가능한 파라미터 포함)의 개수를 계산한다. 2. 학습 가능한 파라미터 수 계산하기 모델의 학습 가능한 파라미터(즉, 가중치)의 개수만을 계산한다. 이를 위한 간단한 함수는 다음과 같다. import torch.nn as nn def count_parameters(model): total_params = sum(p.numel() for p in model.parameters()) trainable_params = sum(p.numel() for p in model... 2023. 11. 17.
[Python/코테공부] 날짜 비교하기 [Python/코테공부] 날짜 비교하기 내 풀이 def combine(date): return ''.join([i.zfill(2) for i in list(map(str, date))]) def solution(date1, date2): return int(combine(date1) < combine(date2)) int형 원소들을 str으로 바꾸고, 월, 일이 1자리가 될 수 있으니 2자리가 되도록 만들어줬다. 예를 들어, [2021, 1, 8] 이 입력으로 들어오면 '20210108' 이 출력으로 나온다. 테스트 결과 좋다. 근데 이보다 더 "파이썬 답게" 푸는 방법을 발견했다. 다른 사람의 풀이 def solution(date1, date2): return int(date1 < date2) 그렇다... 2023. 11. 6.
[Python/코테공부] 특별한 이차원 배열 2 [Python/코테공부] 특별한 이차원 배열 2 내 풀이 이것저것 시도해봤지만.. 정말 단순하게 구현했다. def solution(arr): for i in range(len(arr)): for j in range(len(arr)): if arr[i][j] != arr[j][i]: return 0 return 1 직관적이다. 테스트 결과 테케가 쉬운 경우였을까..? 생각보다는 빠르다 다른 사람의 풀이 내가 원하는 수학적인 방식으로 푸는 방법이 있었다. arr[i][j] == arr[j][i] 이 조건 자체가 symmetric matrix를 의미하는 것이므로, 파이썬 내장 함수인 zip을 이용하여 행과 열을 통째로 비교하면 되었다. def solution(arr): return int(arr == list.. 2023. 11. 6.
[Python/코테 공부] 1로 만들기 [Python/코테 공부] 1로 만들기 내 풀이 무작정 모든 원소를 탐색해서 나누기 계속하는 것 보다, 어떤 규칙성이 있을 것 같아서 노트에 정리해보았다. 규칙성을 찾다 보니, n이 1일 때는 0, 그 외에는 i가 1씩 늘어날 때 2^i 이상 2^(i+1) 미만에서 i번 만큼의 연산을 하는 것을 찾았다. 그래서 이를 아래와 같은 코드로 작성했다. def solution(num_list): answer = 0 for n in num_list: if n == 1: continue for i in range(1, 5): if n >= 2**i and n < 2**(i+1): answer += i break return answer 테스트 결과 효율이 아주 나쁜것은 아니지만, 그래도 for문을 2번 사용하긴 한.. 2023. 11. 3.
[Python/코테공부] 2의 영역 [Python/코테공부] 2의 영역 내 풀이 def solution(arr): answer = [i for i, v in enumerate(arr) if v==2] return arr[answer[0]:answer[-1]+1] if len(answer)>0 else [-1] 테스트 결과 다른 사람은 반복문을 사용하지 않고 풀어서 정리한다. 다른 사람의 풀이 def solution(arr): if 2 not in arr: return [-1] return arr[arr.index(2) : len(arr) - arr[::-1].index(2)] 테스트 결과 확실히 인덱스 찾고 슬라이싱만 하니 속도가 더 빠르다. * 문제 출처 프로그래머스 https://school.programmers.co.kr/learn/.. 2023. 11. 2.