본문 바로가기

전체 글225

[Python] shallow/deep copy https://blueshw.github.io/2016/01/20/shallow-copy-deep-copy/ 얕은 복사(shallow copy) vs 깊은 복사(deep copy) 이번에는 객체의 복사에 대해서 알아보려고 합니다. 객체의 복사는 크게 얕은 복사(shallow copy)와 깊은 복사(deep copy)로 나뉩니다. 얼핏 들으면 단어 자체의 의미가 모호하게 느껴질 수도 있습니다 blueshw.github.io 생각 안나거나 헷갈리면 읽어보기 2021. 10. 10.
[Python] string 모듈 import string string.ascii_lowercase # 소문자 abcdefghijklmnopqrstuvwxyz string.ascii_uppercase # 대문자 ABCDEFGHIJKLMNOPQRSTUVWXYZ string.ascii_letters # 대소문자 모두 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ string.digits # 숫자 0123456789 이토록 간단한 파이썬의 세계.. 2021. 10. 9.
[Python] 문자열 정렬 ljust, center, rjust 왼쪽, 가운데, 오른쪽 정렬 s = '가나다라' n = 7 s.ljust(n) # 좌측 정렬 s.center(n) # 가운데 정렬 s.rjust(n) # 우측 정렬 만약 print로 출력한다면 결과는 가나다라 가나다라 가나다라 이렇게 나온다 2021. 10. 9.
[Python] int 함수 입력된 정수를 몇진수로 바꾸는 함수가 for문을 이용하는것이 아니라 아주 간단한 int 함수로 가능했다. def num_base(num, base): num_str=str(num) num_list=[] for _ in range(len(num_str)): num_list.append(num%10) num=num//10 val = 0 for i, n in enumerate(num_list): val+=n*(base**i) return val num, base = map(int, input().strip().split(' ')) print(num_base(num, base)) 내가 짠 처참한 코드... 보통의 for문 돌리는 거랑 비교해봐도 최악이다. num, base = map(int, input().st.. 2021. 10. 9.
[Python] 몫과 나머지 - divmod, unpacking https://programmers.co.kr/learn/courses/4008/lessons/12732 파이썬을 파이썬답게 - 몫과 나머지 - divmod 본 강의는 파이썬 문법을 이미 알고 있는 분들을 대상으로 만들어졌습니다. ##### 이런 분들께 추천합니다 * 파이썬 문법을 알고 계시는 분 * 알고리즘 문제를 조금 더 쉽게 풀고 싶은 분 * Python 코 programmers.co.kr 쏠쏠한 팁이다 a = 7 b = 5 print(a//b, a%b) print(*divmod(a,b))#divmod와 unpacking을 이용 둘은 같은 출력을 반환 무조건 divmod를 사용하는 게 좋은 방법은 아닙니다. 가독성이나, 팀의 코드 스타일에 따라서, a//b, a%b와 같이 쓸 때가 더 좋을 수도 있.. 2021. 10. 9.
[Python] 파이썬을 파이썬 답게 시작 https://programmers.co.kr/learn/courses/4008 파이썬을 파이썬답게 본 강의는 파이썬 문법을 이미 알고 있는 분들을 대상으로 만들어졌습니다. ##### 이런 분들께 추천합니다 * 파이썬 문법을 알고 계시는 분 * 알고리즘 문제를 조금 더 쉽게 풀고 싶은 분 * Python 코 programmers.co.kr 와... 내가 찾던 강의가 여기 있었구나 한달 반 전쯤에 이미 찾아놓고서는 다른 것 하다가 이제서야 돌아왔다. 내가 찾던 바로 그 파이썬 강의가 여기있었다... 첫 강의부터 정곡을 찔렸다. 파이썬을 C처럼 짜고 있는 나.. 이제 이 강의를 통해서 파이썬을 파이썬 답게 사용하는 간지나는 멋진 코드를 짜보자! 2021. 10. 9.
[C] 포인터, 배열, 동적메모리할당 포인터와 배열은 비슷한 역할을 수행해줄 수 있다. 배열 선언을 통해 정해진 배열의 이름은 배열의 시작 주소를 저장하는 포인터 변수 같은 역할을 수행한다. 하지만 보통의 포인터 변수와는 다르게 그 값을 변경할 수 없다는 가장 큰 차이가 있다. 예를 들면 int a[10];을 선언해주면 a는 배열의 시작 주소를 저장하는 포인터 변수가 된다. 그래서 *(a+i)==a[i] 하지만 문제는 동적메모리할당을 공부해보면 이어진다. 동적 메모리 할당(malloc)에서 int * a = (int*)malloc(4*sizeof(int)); int * temp = (int*)malloc(8*sizeof(int)); a=temp; 이렇게 a의 메모리를 새롭게 할당할 수 있다. 하지만 배열을 포인터처럼 이용하면 (예를 들면) .. 2021. 10. 9.
[CS/알고리즘] Recursion 조건 1 - 적어도 하나의 Base Case, 즉, 순환되지 않고 종료되는 Case가 있어야한다. 조건 2 - 모든 Case는 결국 Base Case로 수렴해야 한다. 암시적(implicit) 매개변수를 쓰지 말고 명시적(explicit) 매개변수를 써라 예를 들어 순환 함수를 사용할 수 있는데 함수 내에서 그냥 for문을 돌렸다고 치자 def func(n, data, target): ~~ for i in range(n): ~~ 이런 식으로 그런데 이때 data가 list인데 시작점이 어디인지 명시가 안되어 있다. 우리끼리 그냥 암시적(implicit)으로 index 0인 값부터 시작한다는 것을 알 뿐 그런데 recursion 함수를 짤 때는 def func_recur(start, end, data, t.. 2021. 10. 8.
[CS/자료구조] ChainHash, maxLoadFactor(λ_max) 오늘 공부한 재밌는 개념 체이닝(Chaining) https://www.boostcourse.org/cs204/lecture/625974/?isDesc=false 자바로 구현하고 배우는 자료구조 부스트코스 무료 강의 www.boostcourse.org 우선 해쉬 테이블에 값에 따른 주소를 반환하기 위해서 1. Hashcode로 돌린다. 2. 나온 정수가 있다면(int a 가정) 양수로 바꿔준다 8바이트의 경우 -> a & ox7FFFFFFF 를 통해(index 값은 음수를 가질 수 없다) 3. %tablesize를 통해 나머지 반환해서 그것을 index로 지정! 하지만 같은 index 값이 나올 때 해쉬 충돌이 발생한다. +1, 제곱수 더하기, 이중 해쉬등의 해결 방법이 있지만 Chain hash를 이용.. 2021. 10. 8.
[Python] 상속, list, dict comprehension Python에서의 상속은 아주 단순하게 구현한다 class Parent(): def method(self): print("부모 클래스") class Child(Parent):#자바와는 다르게 아주 간단하게 상속할 수가 있다! def method(self):#Override는 뭐 간단 ㅎ print("자식 클래스") List List Comprehension 파이썬의 유용한 도구 예1 [ i*i for i in range(1,11) ] # [ 계산식 for문 ] 예2 [ i*i for i in range(1,11) if i % 2 == 0 ] # [ 계산식 for문 조건문 ] 예3 [ ( x, y ) for x in range(15) for y in range(15) ] # [ 계산식 for문 for문 ].. 2021. 10. 8.