전체 글

Algorithm/problem solving

Today's Algorithm(2019-02-14)

Today's Algorithm(2019-02-14) 며칠 전에 푼 문제인데 최근에 좀 바빠서 바로 정리하지 못했네요. 빠르게 정리해볼게요! 추석 트래픽 이번에 푼 문제는 문제 자체를 이해하는 것이 참 힘들었습니다. 문제를 제대로 이해하는 것에서부터 해결방법을 고려해야하는데 문제 이해에서만 20~30분이 걸린 것이죠. 이 문제에서 날짜 데이터를 처음엔 Date 를 이용해서 푸려고 했습니다. 하지만 이 값을 이용해야하는데 Date 타입으로는 어떻게 해야할지 잘 모르겠더라구요. 그래서 getTime() 을 이용하여 다시 ms 단위로 바꾸었습니다. 결론적으로 이렇게 푸는 것이 더 낫다는 생각이 들었습니다. 그 이유는 초가 소수점 3자리까지 표현되기 때문에 ms로 나타내는 것이 소수점 계산을 하지 않아도 된다는..

Algorithm/problem solving

Today's Algorithm(2019-02-10)

Today's Algorithm(2019-02-10) programmers. 뉴스 클러스터링(소요시간 : 80분) 풀면 그렇게 어렵지 않았는데 시간이 조금 오래걸린게 아쉽습니다. 문제 이해하고 분석하여 코드를 짜기전까지 20 ~ 30분 정도 걸린 것 같습니다. 아마도 문제에 '자카드 유사도'와 같은 겁먹게 하는 용어가 있어서 그런 것 같기도 합니다. 문제는 다음 3단계로 나누어 풀었습니다. 문제열을 쪼개 집합 2개를 만듭니다. 이때 각 집합에 대한 자료형은 Map 로 합니다. 처음에 이를 List으로 하려했는데 중복 계산이 복잡할 것 같아 Map 으로 바꾸었습니다. 이를 바꾼게 탁월한 선택이었습니다. 두 집합의 합집합, 교집합을 구합니다. 중복처리에 유념합니다. map1 의 반복문을 돌려 map2에 있는..

CS

프로세서와 코어의 차이점

프로세서와 코어의 차이점은? 프로세서와 쓰레드를 공부하다가 컴퓨터 시스템 정보를 살펴보게 되었고 프로세서는 1개인데 코어가 여러 개인 것을 보면서 그 차이가 궁금해졌습니다. 컴퓨터 공부하게 되면서 주변에서 컴퓨터 살 때 저에게 좀 물어보는데(부담;;) 생각난 김에 다시 정리해야겠다는 생각이 들었습니다. CPU(Central Processing Unit, 중앙 처리 장치) 컴퓨터는 크게 CPU, RAM, 하드디스크 정도로 구분할 수 있겠는데요. 이 요소를 사람에 비유하면 RAM은 단기기억, 하드디스크는 장기기억, CPU는 사고를 담당한다고 볼 수 있습니다. CPU의 사고는 중요한 3가지 기능을 말하는 것인데요. 그것은 기억, 연산, 제어를 말합니다. 컴퓨터를 뜯어보면 쿨러 근처에 아주 작은 칩(마이크로프로..

Algorithm/problem solving

Today's Algorithm(2019-02-07)

programmers. 가장 큰 정사각형 찾기 dp를 이용하는 문제였습니다. 처음엔 하나하나 들러서 갈 수 있는 최대길이를 반복문을 통해 찾아 해결하려고 했었습니다. 그런데 효율성 테스트까지 있는 것보니 이렇게 해서는 복잡도가 커서 통과하지 않을 것 같더라구요. 고민하다 다른 사람의 블로그를 참고하였습니다. 역시나 좀 더 쉽게 해결할 수 있는 방법이 있더라구요. dp 문제는 알고나면 딱 그렇게 푸는게 보이는데 모르는 상태에선 dp문제라는 것을 아직은 감잡기가 힘든 것 같아요. 전략은 1일 때 위, 왼쪽, 좌측위 중에서 가장 작은 값에 +1을 해가면서 표시를 해두고 나중에 가장 큰 값을 찾아 제곱하는 것입니다. 처음엔 위, 왼쪽만으로 제대로 계산이 될 줄 알았는데요. 생각해보니 위, 왼쪽이 예를들어 1이 ..

TIL

Today's Dev Notes(2019-02-07)

JDBC 리팩토링 과정 살펴보기 저의 멘토이신 Pobi의 동영상 강의를 참고하여 작성하였습니다. 우선 리팩토링을 시작하기 전에 테스트코드부터 먼저 작성해야 합니다. 테스트코드는 이후 리팩토링 과정에서 리팩토링 과정에 문제가 없는지 빠르게 피드백을 제공하기 때문에 꼭 필요합니다!! 먼저 중복되는 부분(라이브러리로 뺄 부분)과 중복되지 않는 부분(사용자가 구현해야 하는 부분)을 구분합니다. 그리고 중복되지 않는 부분(변경이 필요한 부분)은 리팩토링 기능을 이용하여 메서드로 추출합니다. 이전에는 중복되는 부분만 추출하는 것만 생각했는데 중복되지 않는 부분, 다른 부분도 빼야한다는 것을 알 수 있었습니다. 중복되는 부분은 클래스로 추출합니다(굳이 클래스로 추출할 필요없이 메서드로 추출할 수도 있습니다) 이렇게 ..

Book/programming

웹을 지탱하는 기술1 - 웹 개론

웹을 지탱하는 기술1 이 책의 목적 웹 아키텍처의 관점에서 HTTP, URI 그리고 각종 하이퍼미디어 포맷의 스펙을 설명합니다. 웹 서비스의 구체적인 설계방법을 보여줍니다. 웹 구현을 지탱하는 기본적인 지식을 알고 싶었는데 이 책의 목적을 보면서 어느정도 그 갈증을 해결할 수 있겠다라는 생각이 듭니다. 그리고 두번째 목적인 구체적인 설계방법에서 제가 해오던 것과 좀 비교하면서 읽을 수도 있을 것 같네요. 이 책은 총 5부로 이루어져있습니다. 1부. 웹의 기술적인 백그라운드와 아키텍처 2부. URI 3부. HTTP 4부. 하이퍼미디어 포맷 5부. 웹 서비스와 웹 API의 설계 책의 목적에서 첫번째 목적이 제일 크게 1부~4부, 두번째 목적이 5부에서 설명되고 있는 것 같네요. 하루에 1부씩 읽으면 될 것 ..

Brad Lee
Brad's blog