일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Linux
- redis
- 코드워
- 프로그래머스
- 파이썬
- programmers
- Java
- dynamic programming
- HBase
- golang
- zookeeper
- gradle
- scala
- 자바
- 튜토리얼
- Python
- docker
- 스칼라
- 문제풀이
- 알고리즘
- 주키퍼
- go
- codewars
- 리눅스
- leetcode
- boj
- DP
- OOM
- 동적프로그래밍
- Go언어
- Today
- Total
목록2017/01 (9)
파이문
Go 배열(Golang array) 모든 배열은 연속된 메모리 주소로 되어 있습니다. Go 역시 마찬가지 입니다.Go에서 배열을 정의하려면, 요소의 타입과 요소의 개수를 명시해야 합니다. var variable_name [SIZE] variable_type 배열의 크기는 반드시 integer이며, 0보다 커야 합니다. 타입은 Go에서 가능한 어떤 타입도 올 수 있습니다. 예를 들어서 10개의 요소를 갖는 float32 타입의 배열을 정의하고자 한다면 아래 처럼 할 수 있습니다. var balance [10] float32 초기화 시 여러개의 값을 임의로 넣고자 한다면 중괄호 안에 값을 채우면 됩니다. 또한 특정 위치에 다른 값을 설정하고 싶다면 다른 언어처럼 index 값으로 접근하여 값을 대입하면 됩니..
파이썬에서 언더바의 의미 파이썬에서는 자바나 C++과 다르게 private, public과 같은 예약어가 존재하지 않는다. 그래서 파이썬 프로그래머들은 데이터나 메서드의 이름에 특정 규칙을 적용하였는데 그것이 바로 언더바 이다. 아래의 예제는 언더바가 붙은 경우는 클래스의 내부 메서드이다.class A(object): def __init__(self): print("init") def __str__(self): pass def __repr__(self): pass def __del__(self): print("del")그러나, 파이썬은 내부 이름에 누군가 접근하는 것을 실제로 막지는 않기 때문에, 언더바가 붙은 메서드는 사용할 때 매우 조심해야 한다. 주로 클래스 내부 구현은 언더바 두개를, 기타 다른 ..
파이썬으로 크롤러 만들기(Python web crawler)크롤러는 크게 두 가지 일을 한다. 웹 페이지 다운로드다운로드한 웹 페이지 파싱여기서 예제로 구현할 크롤러 역시 위의 두 가지의 기능만을 갖고 있을 것이다. (다운로드할 url을 이미 갖고 있다는 전제에서 시작하겠다.) 예제로 구현할 나의 컴퓨터 환경은 OS의 경우 Windows 10이며 파이썬은 3.5버전이다. 그러나 2.7이랑 차이가 많이 나는 메서드로 구현하지 않을 것이기 때문에, print 함수만을 제외하면 동일하게 돌아갈 것이다. 라이브러리의 경우 다운로드는 requests를, 파서는 BeautifulSoup4를 사용할 것이다. 예제로 구현할 웹 페이지는 나무 위키를 선택하였으나 너무 느려서 그냥 오버워치 인벤으로 바꿨다. 선수 지식으로..
파이썬 클래스 상속(Python class inheritance) 클래스란 무엇인가?리스트나 문자열과 같은 구조는 정말 유용하지만 때때로 구현하고자 하는 것에 제약이 걸릴 때가 있다. 예를 들면 동물에 대한 정보를 담고 있는 구조를 원한다고 하자. 동물의 이름과 동물의 종에 대해 담고 싶지만 리스트나 문자열에는 내가 저장하고자 하는 정보를 모두 표현할 수가 없다. 이 때 클래스를 사용할 수 있다. 단지 Pet이라는 클래스를 만들고 attribute에 name과 species를 지정하면 된다. 인스턴스란 무엇인가?클래스를 만들기 이전에 앞서, 중요한 차이점 하나를 알고 있어야 한다. 바로 클래스는 구조를 포함하고 있다는 것이다. 예를 들어 Pet 클래스는 name(이름)과 species(종)을 호출할 수 ..
Go switch 문(Go switch example) Go switch 문은 break를 사용하지 않습니다. (저는 파이썬 밖에 하지 않아서 switch 문에 대해서 잘 몰랐는데요. 알고보니 java에서는 매 케이스마다 break를 해주어야 하더군요.) i := 2 fmt.Print("Write ", i, " as ") switch i { case 1: fmt.Println("one") case 2: fmt.Println("two") case 3: fmt.Println("three") }물론 break를 명시하여도 에러가 나진 않습니다 Go에는 다른 언어와는 다른 생소한 키워드 fallthrough가 있는데요. 자바의 경우 break 문을 실행하지 않으면 모든 케이스에 대하여 검사합니다. 하지만 앞서 ..
Go 반복문(Go for loop example) Go 언어에는 반복문이 for 문 밖에 없습니다. for 반복문은 다른 언어와 비슷한 문법을 갖고 있고, 소괄호는 없고 중괄호는 필수라는 점만이 다릅니다.package main import "fmt" func main() { sum := 0 for i := 0; i < 10; i++ { sum += i } fmt.Println(sum) } 무한 루프인 경우 for 반복문 안을 비워두고 사용하면 됩니다.for { } C언어에서 while문을 사용하는 것 처럼 구현할 수도 있습니다.sum = 1 for sum < 1000 { sum += sum } Go 조건문(Go if statement example) for 문과 비슷하게 소괄호는 필요 없고, 중괄호는 반..
Go 변수(Go variable) Go 에서는 변수를 지정할 때 var 변수명 리턴형 순으로 선언합니다. 열거 되는 변수명이 같은 타입이면 리턴형을 하나만 써줄 수도 있습니다. 바로 아래처럼 말이죠.var x, y, z int = 3, 2, 1 초기화를 하는 경우 값을 생략할 수도 있습니다. 리턴형을 생략하더라도 Go는 초기화 하고자 하는 타입에 따라 값을 지정할 수 있습니다. (동적 타입 지원) var c, python, java = true, false, "no!"Go에서는 := 을 사용하여 변수 명을 지정할 수도 있습니다. 함수 내에서 := 을 사용하면 var 과 명시적인 타입(e.g. int, bool) 을 생략할 수 있습니다. (그러나 함수 밖에서는 := 선언을 사용할 수 없습니다.) c, py..
파이썬 얕은 복사와 깊은 복사(Python shallow copy, deep copy) 파이썬에서 리스트나 대부분의 컬렉션을 복사하는 가장 손 쉬운 방법은 그 자료형 자체의 내장 생성자를 사용하는 것이다.>>> l1 = [3, [55, 44]] >>> l2 = list(l1) # l2 = l1[:] >>> l2 [3, [55, 44]] >>> l1 == l2 True >>> l1 is l2 False 그러나 생성자나 [:] 키워드를 사용하면 얕은 복사(Shallow Copy)를 사용하게 된다. 사본은 원래 컨테이너에 들어 있던 동일 객체에 대한 참조로 채워지게 된다. 이 방식은 모든 항목이 불변형이면 메모리를 절약할 수 있지만 가변 항목이 들어있을 경우 예상치 못한 결과를 받게 될 수도 있다.>>> l1..
Number of Boomerangs(https://leetcode.com/problems/number-of-boomerangs/) 좌표의 범위가 각각 -1000부터 1000까지 되는 point가 최대 500개가 있을 때, 서로 다른 point 끼리의 거리 중 같은 것의 개수를 구하는 문제였습니다. 예를 들어 (0,0), (0,1), (0,2) 라는 point가 존재할 때 (1,0)과 (0,0)의 거리는 1이고 (1,0)과 (2.0)의 거리고 1입니다. 이 때, i를 (1.0)으로 두고 j를 (0,0) 또는 (2,0), k를 (2,0) 또는 (0,0)이라고 할 때 i와 j의 거리 그리고 i와 k의 거리가 같습니다. 이렇게 같은 거리를 갖게 되는 경우가 세 점 사이에서 총 2가지가 발생하는데요. 이 2를 ..