* 전체 코드 ## 얕은 복사 a=[1,2,3] b=a[:] # b=a.copy()도 똑같이 동작 b.append(1) print(f"{a=}, {b=}, {id(a)=}, {id(b)=}") # 출력: a=[1, 2, 3], b=[1, 2, 3, 1], id(a)=4379693696, id(b)=4379284288 ## 얕은 복사의 한계 a=[[1,2],[3,4]] b=a.copy() # 얕은 복사 a[0][0]=100 print(f"{a=}, {b=}, {id(a)=}, {id(b)=}") # 출력: a=[[100, 2], [3, 4]], b=[[100, 2], [3, 4]], id(a)=4378411776, id(b)=4378556096 print(f"{id(a[0])=}, {id(b[0])=}")..
* 전체 코드 ## f-string = 지시자 power=100 print(f"{power=}") # 출력: power=100 ## 활용 예시 gesus=100 budda=[] for i in range(5): gesus+=i budda.append(gesus) print(f"{gesus=}, {len(budda) = }, {budda=}") # 출력 # gesus=100, len(budda) = 1, budda=[100] # gesus=101, len(budda) = 2, budda=[100, 101] # gesus=103, len(budda) = 3, budda=[100, 101, 103] # gesus=106, len(budda) = 4, budda=[100, 101, 103, 106] # gesu..
* 전체 코드 ## 삼항연산자 기본 a=10 print("a is big" if a > 5 else "a is small") # 출력: a is big ## 중첩 삼항연산자 a = 3 print("a is big" if a > 5 else "삼위일체" if a==3 else "a is small") # 출력: 삼위일체 ## 함수와 함께 삼항연산자 def test(p): print(f"a is {p}") a=10 test("king") if a > 5 else test("god") # 출력: a is king Contents 1. 배경 python에는 if else 조건문을 한 줄로 쓸 수 있는 삼항 연산자가 있습니다. 아래와 같은 간단한 문법으로 사용합니다. [참일 때] if [조건문] else [거짓일..
Contents 1. 배경 파이썬으로 코드를 짜다보면, 코드가 엄청 오래 걸린다고 느낄 때가 있습니다. 그럴 때 함수 별로, 혹은 코드별로 걸리는 시간을 측정해 병목현상을 해결할 수 있습니다. python 라이브러리를 이용해 코드의 시간을 측정하는 방법과 주피터 노트북을 이용하는 경우 매직 커맨드를 이용해 코드의 시간을 측정하는 방법을 알아보겠습니다. 2. 코드 실행시간 측정 1) time 라이브러리 이용 (초 단위) import time # time 라이브러리 import start = time.time() # 시작 time.sleep(1) # 측정하고자 하는 코드 부분 print(f"{time.time()-start:.4f} sec") # 종료와 함께 수행시간 출력 python에서 기본적으로 시간을 ..
Contents 1. 배경 주피터 노트북을 사용하다 보면, 특히 머신러닝/딥러닝을 하다 보면 크기가 매우 큰 데이터를 다루게 됩니다. 이때, 여러 노트북을 켜놓아서 여러 노트북들이 메모리를 총 얼마 정도 쓰고 있는지, 그리고 개별 노트북은 메모리를 얼마 정도 쓰고 있는지 알고 싶을 때가 있습니다. 그 방법을 알아보겠습니다. 2. 전체 노트북 메모리 1) 설치 # pip를 이용한 설치 pip install jupyter-resource-usage # 주피터 노트북에서 설치하는 경우 pip !pip install jupyter-resource-usage # conda를 이용한 설치 conda install -c conda-forge jupyter-resource-usage 주피터 노트북에서 설치하는 경우는 ..
Contents 1. 배경 파이썬에서 텍스트 파일을 읽고, 쓰는 것만으로 충분치 않을 때가 있습니다. 파이썬에서 pickle을 이용하면, 변수를 그대로 저장했다가 불러올 수 있습니다. 예를 들어, python 자체 자료형인 리스트, 딕셔너리 등뿐만 아니라, pandas의 데이터 프레임, 심지어 함수와 클래스까지 파일로 저장하고 불러올 수 있습니다. 그 방법을 알아보겠습니다. 2. 기초 사용법 # python 변수(객체)를 pickle 파일로 저장 with open([파일], 'wb') as f: pickle.dump([변수], f) # pickle 파일 불러오기 with open([파일], 'rb') as f: var = pickle.load(f) pickle.dump를 이용해 [변수]를 [파일]에 저장..
* 전체 코드 ### 2,8,16 진수 k=15 print(f"k 2진수: {k:b}, k 8진수: {k:o}") # 출력: k 2진수: 1111, k 8진수: 17 print(f"k 16진수 - 소문자:{k:x}, 대문자:{k:X}") # 출력: k 16진수 - 소문자:f, 대문자:F ### 1000 단위 쉼표(,) m=1000000000 print(f"m: {m:,} 원") # 출력: m: 1,000,000,000 원 ### 출력 길이 조절 print(f"a:{a:10}") # 출력: k: 15. ### 왼쪽, 오른쪽, 가운데 정렬 print(f"a center: {a:^10}.") # 출력: k center: 15 . print(f"a left: {a:10}.") # 출력: k right: 15. ..
* 전체 코드 ## 기초 예시 a=10 print(f"a: {a}") # Output: 10 print(f"a: {a:.2f}") # Output: 10.00 ## 자주 사용하는 포맷팅 ### 소수점 자리수 import math pi=math.pi print(pi) # Output: 3.141592653589793 print(f"파이: {pi:.3f}") # Output: 파이: 3.142 ### 퍼센트(백분율) percent=0.9522 print(f"퍼센트: {percent:.2%}") # Output: 퍼센트: 95.22% ### 부동 소수점 출력 li = [0.0, 0.5, 1.0] for i in li: print(i) # Output: 0.0 0.5 1.0 for i in li: print(f..
Contents * 일반 풀이와 숏코딩 풀이 2개 ## 일반 풀이 sik_minus = input().split('-') # 55-50+40 => [55, 50+40] sik_plus = [] #[55, 90] for i in sik_minus: count = 0 i = i.split('+') #[55], [50,40] for j in i: count += int(j) # 1. 55 2. 50+40 sik_plus.append(count) result = sik_plus[0] for i in range(1, len(sik_plus)): result -= sik_plus[i] print(result) # -35 ##숏코딩1 sik_minus = input().split('-') sik_plus = list..
Contents * 일반 풀이와 숏코딩 풀이 ## 일반 풀이 T = int(input()) ## 테스트케이스 for _ in range(T): brk_list=list(input()) ## 괄호 리스트 pair_check=0 for brk in brk_list: if brk == '(': pair_check+=1 elif brk ==')': pair_check-=1 if pair_check 0: print("NO") elif pair_check==0: print("YES") ## 숏코딩 풀이 for _ in range(int(input())): b=input() while '()' in b: b=b.replace('()','') pri..
1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net Contents * 일반 풀이와 숏코딩 풀이 ## 일반 풀이 def fib(N): zeros=[1,0,1] ones=[0,1,1] if N >= 3: for i in range(2,N): zeros.append(zeros[i-1] + zeros[i]) ones.append(ones[i-1] + ones[i]) print(f"{zeros[N]} {ones[N]}") T = int(input()) for _ in range(T): N = int(input()) fib(N) ## 숏코딩 풀이 T = int(input()) for _ in range(T): N = ..
1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net Contents * 일반 풀이와 숏 코딩 풀이 코드 ## 일반 풀이 board = input() # 문자열 입력받기 board = board.replace('XXXX', 'AAAA') board = board.replace('XX', 'BB') if 'X' in board: print(-1) else: print(board) ## 숏코딩 풀이 result = input().replace('XXXX','AAAA').replace('XX','BB') print(-1 if 'X' in result else result) 문제 정의 처음에 'X' , '.'으로 이루어진 보..