목록분류 전체보기 (146)
개발자 블로그
개발을 하다보면 import를 사용할 일이 정말 많다. 해당 파일에서 다른 파일에 있는 객체를 가져와 사용하고 싶을 때, 물론 사용할 객체를 한 파일에 있으면 import를 사용할 일은 없다. 하지만 서비스와 비즈니스 모듈을 나누고 또 테스트를 사용하고 등등 여러가지 이유로 우리는 여러 파일을 나누고 불러와 사용하는 일이 빈번하다. 그럴 때 의도하지 않는 것도 실행이 될 수도 있다. 해당 파일에 필요한 것만 가져와 사용하고 싶은데... 그럴 때 __name__ 이란 변수의 성질을 잘 알고 사용한다면 우리는 이러한 불편함을 해결할 수 있다. __name__ 란? __name__은 파이썬 파일을 실행하면 자동으로 생성이 되는 변수이다. 그렇다면 이 변수에는 뭐가 참조되고 있을까... 바로 '__main__'..
클래스 메소드와 static 메소드를 이해하기 전에 클래스 변수와 인스턴스 변수에 대한 이해를 하고 넘어가자! 클래스 변수: 클래스 내부의 변수로 self(객체)로 전달받지 않는다.(클래스에 속한 변수) 클래스 내부에 직접적으로 연결되어 있고, self를 인자로 받지 않고 변수 명 그대로 쓰인다. 인스턴스 변수: 객체 안에 있는 변수로 self(객체)에 의해 전달받은 변수.(객체에 속한 변수) 보통 클래스 안의 메소드 내부에 있음. ex) self.name = 'hayongwoon' 둘의 차이는 실제로 값에 접근을 할 때에도 있다. 클래스 변수의 경우 '클래스이름.변수명' 으로 접근 가능하고, 객체를 생성해서 '객체.변수명'으로도 접근이 가능 하지만, 인스턴스 변수의 경우 객체를 만들어야만 객체이름으로 ..
지난 글에서 네스티드 함수와 클로져 테크닉을 공부했다. 그래서 데코레이터를 기술을 더 쉽게 이해할 수 있었다. 데코레이터는 단순히 함수 위에 '@데코네임'을 붙여 붙인 함수에 대해 부가적인 기능이나 제한을 뒀을 때 사용하곤 했다. 기술적인 부분을 살펴보면 우선 데코레이터 아래 들어가는 함수가 데코레이터 함수의 네스티드 함수가 된다. 즉, 데코레이터 아래 함수를 인자로 받아 함수를 반환하는 기술이 데코레이터의 원리이다. @deco는 아래 함수를 데코레이터 deco 함수에 통과시켜라! 라고하는 말, 두 이미지는 같은 결과를 내지만 더욱 간결하다!
함수를 만들어서 반환하는 함수, 파이썬은 모든 것이 객체이기에 함수를 반환하는 함수를 만들 수 있다. 따라서 함수 안에 정의 된 함수를 네스티드 함수라고 한다. 여기서 m이라는 변수를 잘 살펴보자. f1이라는 객체를 만들 때, m=2라는 변수에 참조했다. 그리고 다시 f1(7)이라고 했는데, 네스티드 함수의 안을 보면 변수 m에 대해 따로 정의한 것이 없다. 그런데 네스티드 함수에서 어떻게 밖에 있는 변수를 참조해서 가져올까? 바로 클로저라는 테크닉을 사용한다고 한다. 정리 네스티드 함수 - 함수 안에서 정의 된 함수 클로저 - 네스티드 함수 밖에서 정의 된 변수를 참조하여 사용할 때 쓰는 기술 보다시피 다소 복잡한 곳에 따로 저장을 해둔 것을 확인 할 수 있다. 클로져라는 변수의 0번 째 인덱스 안의 ..
문제 설명 더보기 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인 노래가 재생된 ..
문제 설명 더보기 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간다리를 지난 트럭다리를 건너는 트럭대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,6] 3 [7] [4] [5,6] 4 [7] [4,..
문제 설명 더보기 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다. 논문별 인용 횟수는 0회 이상 10,000회 이하입니다. 입출력 예citationsr..
문제 설명 더보기 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길..
동시성, Concurrency란? DB에서의 동시성에 대해, DB에 다수의 사용자가 동시에 접근하는 상황에서 동시성은 transaction이 순차적으로 실행되는 것이 아니라, 순서에 상관없이 동시에 실행되는 것을 의미한다. 예를 들어보자. "비행기 티켓팅을 한다고 생각해 봅시다. 비행기에 자리가 하나 남은 상황. A와 B는 같은 비행기를 예매하려고 합니다. A, B 둘 다 비행기의 잔여좌석을 확인하기 DB를 확인하게 됩니다. 이때 동시에 접근하여 한자리 남은 것을 확인하고 둘 다 예매에 성공한다면 어떤 일이 일어날까요? 비행기 자리 하나에 둘 모두 예매가 되어버리는 상황이 발생합니다. " 위와 같은 이유로 동시성을 고려하여 관리해야한다. 개발자가 동시성을 어떻게 관리해야 하는지 알아보기 전에 RDBMS는..
웹 어플리케이션/웹 서비스를 배포하고, 확장하고, 관리하는데 있어 쉽고 빠르게 할 수 있도록 돕는 완전 관리형 서비스이다. Elastic Beanstalk는 Java, Go, PHP, .NET, Node.js, Python, Ruby 등으로 개발된 앱을 지원하고 각 플랫폼마다 다양한 구성을 지원한다. 쉽게 EC2로 웹 서비스를 만들어 사용하는 경우를 생각해보자. 일단 가동시킬 애플리케이션을 개발한다. 이어서 EC2 인스턴스를 생성하고, 애플리케이션 동작을 위한 미들웨어 설치와 설정을 진행한다. 필요하다면 데이터베이스도 구축하고 서버를 확장하고 로드밸런싱한다. 이어서 인스턴스를 모니터링하고 알림을 보내주는 구조도 만든다. 여기까지 해야 애플리케이션을 디플로이하고 웹 서비스를 시작할 수 있다. Elastic..