Monday, March 18, 2019

2019년을 시작하며


2019년도에 내 머리속에 공부해야한다라고 생각하는것들 우선순위를 정해야겠다.
실력은 부족한데, 욕심은 많고 시간은 부족하니 마음만 급하다. ㅎ

1. React, Redux,
  - reactive 한 client 환경에 적응을 해야한다.
2. 블록체인?
 - 이거는 과감히 버려야겠다.
3. 머신러닝
 - 여기는 내 분야가 아닌걸로
4. MongoDB
 - 문서화를 진행하고, 조금더 개념적으로 깊게 접근 한다.
5. Spark
 - 현재 사용하고 있는 batch 서비스를 spark 로 전환한다.
6. Hadoop
 - 하둡을 시작한다. Just beginner
7. 수학
 - 기초 정수론 독학한다.
 - 이산수학 독학
8. Kafka
 -  이것도 해야하는데
9. Reactor
 - 이것도
10. leetcode, Project Euler 문제 풀이

다시 정리하자면   하고싶은거와 해야하는거를 두가지로 나누어 본다면 아래와 같다

하고 싶은거
7. 수학
 - 기초 정수론 독학한다.
 - 이산수학 독학
10. leetcode, Project euler 문제 풀이


해야하는거
1. React, Redux,
4. MongoDB
5. Spark
6. Hadoop
8. Kafka

하고 싶은거는 집에서 1-2시간씩 일정을 잡고 하면 될것 같고

해야하는거는 업무와 상관있기때문에
회사에서 시간을 내서 공부를 해야겠다.

2019년 크리스마스때, 한해를 마무리할때 오늘 정리했던 모든것들을 다 이루기를 바라며
희망해본다.

Wednesday, March 6, 2019

problem 304 Primonacci

거의 3년만에 올일러 문제가 풀렸다 ㅠ 드뎌 200문제를 풀었고 level은 8로 올랐다.
이 문제도 4일걸려서 풀었는데 계속 풀어야할지 의문이긴하다 .ㅎ

It took 4 days to solve this problem. 

finally I solved 200 problems in proejct euler ^^ 

https://projecteuler.net/problem=304

hint : 
 remainder

 x mod a + x mod b ==x mod a + b


Monday, March 4, 2019

이번주 문제 https://projecteuler.net/problem=425 프라임 숫자와, 관련해서 공부해보자

이번주 문제 https://projecteuler.net/problem=425 프라임 숫자와, 관련해서 공부해보자

1004. Max Consecutive Ones III

1004. Max Consecutive Ones III

처음 풀이 N^2

Runtime: 1000+ ms, faster than 100.00% of Java online submissions for Max Consecutive Ones III.

최적화 풀이 2N

Runtime: 7 ms, faster than 100.00% of Java online submissions for Max Consecutive Ones III.

풀이 방법

start 와 end 2개의 포지션을 가지고 구한다.

start 와 end 사이의 0 개수가 k 보다 적을때
-> end index를 늘림

회고

  • 코드 if연산을 조금더 깔끔하게 할 수 있을것 같은데 쉽지가 않네
class Solution {
    public int longestOnes(int[] A, int K) {
       int zeroCount = 0;
        int max = 0;
        int startIndex = 0;

        for(int i=0; i<A.length; i++){
            if(A[i] == 1 ){
                max = Math.max(i+1 - startIndex, max) ;
                continue;
            }else {
                if(++zeroCount > K){                    
                
                    max = Math.max(i - startIndex, max) ;
                    sub:
                    for(; startIndex<=i; startIndex++){
                        if(A[startIndex] == 0){
                            zeroCount--;
                            startIndex++;
                            break sub;
                        }
                    }
                }
            }
        }
        max = Math.max(A.length - startIndex, max) ;
        return max;
    }
}