본문 바로가기

전체 글57

Python은 변수를 어떻게 저장하는가? 객체(objects) Python을 배울 때 '객체(Objects)'란 단어가 빈번히 나온다. 사전에서 명시한 Object는 물체를 의미한다. 물체의 특성은 구체적인 형태를 가지고 있다는 것이다. Python에서 정의하는 객체도 이와 유사하다. 객체(Objects)는 파이썬이 데이터(data)를 추상화한 것(abstraction)이며 아이덴티티(identity), 형(type), 값(value)을 갖는다. 위의 내용을 요약하자면 객체(Objects)는 자료형(type)을 가지며 메모리(저장 공간)을 차지한다고 할 수 있다. 즉, 변수를 선언하면 선언한 값이 자료형에 따른 메모리 공간을 차지하며 저장되고 변수는 생성한 메모리 공간의 주소(identity)를 참조한다고 할 수 있다. 따라서 Python의 변.. 2021. 8. 16.
JavaScript 기초 0 - JS의 위대함 시작은 미약하였으나 끝은 창대하리라 JavaScript의 역사를 한 문장으로 표현해보았다. 만약 아래에 정리한 JS의 역사를 읽고 자신의 인생과 비슷하다면 성공한 인생이라고 자부해도 된다. JS의 탄생 JS는 브렌던 아이크라는 천재가 10일만에 만들어낸 프로그래밍 언어이다. 당시 그가 재직중에 있던 Netscape란 회사에서는 자사의 브라우저를 더 상호적인(interactive) 웹사이트로 성장하기를 원했다. 그때에는 HTML과 CSS만으로 웹사이트를 설계했으니 이러한 요구는 당연했다. 회사는 그에게 Scheme이란 프로그래밍 언어를 자사의 브라우저에 넣으라고 지시했지만 그의 상사가 Scheme이 Java와 비슷하다고 언급했고 이에 착안하여 스스로 JS 첫번째 버젼을 10일만에 완성했다. 이것이 JS의 .. 2021. 8. 16.
효율을 높이는 방법 - 반복되는 규칙 나의 습관(사족) 나는 알고리즘을 풀 때 문제에서 주어진 과정 그대로 따라 푸는 방식을 선호한다. 그래서 효율성을 요구하는 문제에서 자주 막히게 된다. 사실 이러한 문제는 알고리즘 자체보다는 문제 해결 논리 자체에 대한 센스를 평가하는 경우가 많다. 그래서 내가 푼 코드에서 사용한 자료구조를 바꾼다거나 약간의 알고리즘을 변경한다고 해서 풀리는 경우는 거의 없다.(재귀 -> 큐 또는 스텍의 경우 풀리는 경우가 많다.) 또 자료구조나 알고리즘을 평가하는 문제같은 경우 풀면서 감이 잡히고 비슷한 유형을 보면 바로 해결할 수라도 있지만 효율성 문제들의 경우 유형이 정해진 것이 아니라서 매번 풀 때마다 늘 새로움을 느낀다. 사실 위의 말은 내 핑계일 수도 있지만 내게 어려운 걸 어렵다고 얘기하는 게 잘못된 것은 .. 2021. 8. 16.
효율을 높이는 방법 - 조건문 1. 중복 조건 비교 제거 def med3(a, b, c): if (b >= a and c b and c b): return b return c 위의 코드에서 if와 elif의 조건을 보면 a와 b의 값 비교가 중복되어 있음을 알 수 있다. 이러한 비교 조건의 중복은 코드의 효율을 나쁘게 만드는 요소이다. 2. 반복문 안에 조건문 제거 sum = 0 for i in range(a, b + 1): if i < b: print(f'{i} + ', end='') else: print(f'{i} = ', end='') sum += i 위의 코드는 반복문 안에 조건문이 있는 구조로 반복될 때마다 조건문이 실행되는 비효율적인 구조를 띄고 있다. 조건을 살펴보면 카운터용 변수.. 2021. 8. 16.