일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spray
- wait region split
- 박종천
- 코딩인터뷰
- datalake
- coursera
- 데이터야놀자
- 알고스팟
- kafka
- 2017회고
- 실전사례
- 클린코드
- 동시성
- 개발7년차매니저1일차
- 테스트주도개발
- 단위테스트
- 회고
- 데이터유통
- 데이터레이크
- 해커컵
- 켄트백
- functional thinking
- 개발자로살아남기
- hackercup2017
- clean code
- 함수형 사고
- 2016년회고
- 데이터플랫폼
- Raw-Request-URI
- 개발자
- Today
- Total
목록전체 글 (97)
Software Engineering Note
문제: MMRECT2 / 구현 MMRECT1 문제랑 똑같은데 점의 갯수가 최대 20,000 개까지 입력될 수 있다. MMRECT1 처럼알고리즘으로 풀면 TLE를 면치 못하겠다. 해서, 메모리를 좀 이용하기로 했다. 해결전략 1. x좌표가 같은 점들을 한 곳에 모아놓는다. (map)2. 루프를 돌면서 입력된 점을 하나씩 꺼내고, map에서 좌표리스트를 꺼낸다.3. 좌표리스트를 돌면서 다음을 수행 (정사각형의 조건을 생각해보자)- x좌표는 어차피 같으니까 y 차이를 구한다. (=dist)- 좌표 p1, p2에서 같은 방향으로 dist만큼 떨어진 점이 있는지 찾아본다.- 예를 들어, y 값이 2 차이나면 두 점의 왼쪽에 2만큼 떨어진 곳에 점이 있거나, 오른쪽으로 2만큼 떨어진 곳에 점이 있어야한다.4. 정사..
문제: MMRECT1 / 구현 문제를 처음 보고 "좌표를 어떻게 표현해야 할까?" 하는 고민.. -10000 ~ 10000 범위를 모두 표현하기는 불가능해보인다. 점의 갯수가 50개 이하니까 입력된 점을 체크해보는 방식이 합리적으로 보인다. 정사각형의 특징을 이용하면 빨리 풀 수 있을 듯 해결전략 1. 시작점 하나를 선택2. x는 같은데 y좌표가 다른 점을 찾는다. 그리고 거리(=dist)를 구한다.3. y는 같으면서, x가 dist만큼 떨어진 점을 찾는다.4. 2에서 구한 점의 y 좌표와, 3에서 구한 점의 x 좌표를 값으로 갖는 점이 존재하는지 체크하고 최소/최대값 갱신 코드: https://github.com/xgate/algospot/blob/master/IMPL/MMRECT1.cpp
(이 장에서는 주로 외부 라이브러리나 패키지를 사용하는 방법을 다룬다.) 외부코드 사용하기 wrapping 클래스를 만들어 제한된 메소드만을 제공하여 악용할 소지를 없앤다. Map과 같은 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출이 되지 않도록 주의한다. (clear() 같은 메소드로 날릴 수도 있다.) Map 인스턴스를 공개 API의 인수로 넘기거나 반환 값으로 사용하지 않는다. 학습 테스트 외부코드를 이용할 때는 곧바로 우리쪽 코드에 반영해서 구현부터 하지말고 테스트부터 하자. (= 학습테스트) 학습 테스트에 드는 비용은 없다. 어쨌든 API를 배워야 한다. 오히려 필요한 지식만 확보하는 손쉬운 방법이다. (이해도를 높여주는 정확한 실험) 아직 존재하지 않는 코드사..