2의 10000제곱을 MOD로 나눈 나머지 구하기

Intro Leetcode 1498번 문제 Number of Subsequences That Satisfy the Given Sum Condition를 풀이하는데, 처음에는 Brute force로 풀다 안되어서 슬라이딩 윈도우 방식으로 시도를 해 보았습니다. 그런데 속도를 개선하고 보니 다른 문제가 있었습니다. 조건에 따르면 최대 2의 10000 제곱까지도 계산을 해야 하는데, 이 크기가 만만치 않습니다. 2의 1만제곱이 얼마나 큰지 long타입은 커녕 double로도 담을 수 없습니다. Double.MAX_VALUE 를 확인 해 보면 2의 1023 제곱까지는 담기는데, 1024제곱부터는 담기지 않습니다. 코드를 작성해서 확인 해보면 아래 보이는 것 처럼, 범위 밖의 숫자는 Infinity로 나옵니다. ..

Development/Fundamentals 2023.05.06
java로 작성해보는 정렬 알고리즘과 성능 비교

Intro 얼마전 면접을 보다가 정렬 알고리즘을 손 코딩 해 볼 기회가 있었습니다. 갑자기 눈앞에 정렬 알고리즘을 손코딩 해야 하는데, 제한시간도 있다 보니 잠시동안 고민이 되었습니다. 당장에 간단하게 작성할 수 있는 버블정렬을 선택해 다른 문제 풀이에 쓸 시간을 조금 더 벌 것인가 아니면 자바를 처음 배울때 직접 구현해보려다가 못했던 퀵정렬을 한번 작성해 볼 것인가. 결론부터 말하자면 안전한 길을 택했습니다. 솔직히 버블정렬의 쉬운 난이도에도 불구하고 항상 실제로 코드를 구동해보고 테스트 하기 전 까지는 맞는지 문제가 있는지 확신이 서지 않았습니다. 과거로 돌아가, 학원에서 초급 자바시간에 정렬에 대해 배우는 기회가 있었습니다. 선택, 버블, 삽입 정렬에 대해서 간단하게 설명해주셨고 한번씩 코드를 따라..

Development/Fundamentals 2021.08.03
네트워크 표준 모델 OSI 7 계층 ( OSI 7 Layer)

네트워크 표준 모델 OSI 7 계층 ( OSI 7 Layer) The Open Systems Interconnection model (OSI model) is a conceptual model that characterises and standardises the communication functions of a telecommunication or computing system without regard to its underlying internal structure and technology. Its goal is the interoperability of diverse communication systems with standard communication protocols. - https://..

Development/Fundamentals 2021.07.22
객체지향설계 5대원칙 SOLID

학원 수업에서 선생님이 항상 강조하셨던 SOLID 원칙이 잘 이해가 되지 않아서 개인적으로 공부하기 위해 여러가지 검색을 해보고 많은 글들을 읽어보았습니다. 그러다 우연히 Youtube에서 41분짜리 영상을 접하게 되었는데, 앞부분만 잠깐 보려고 했던게 결국 영상을 마지막까지 보게 되었고 도움이 제법 많이 되었습니다. ​ https://www.youtube.com/watch?v=rtmFCcjEgEw 북 마케도니아 출신 개발자 Katerina Trajchevska가 2018년 암스테르담에서 열린 컨퍼런스에서 SOLID를 주제로 강연을 했던 내용인데요, 본인의 경험을 예로 들어가며 설명을 잘 해줘서 이해하기가 좋았습니다. SOLID는 Robert. C. Martin (Uncle Bob 이라고 불립니다) 이 ..

Development/Fundamentals 2021.04.11
이진 탐색 알고리즘 (Binary search)

9주차 주말이 되었습니다. 저는 주말 아침에는 1~2시간 정도 프로그래머스에서 문제를 풉니다. 자기전에 문제를 풀면 밤새 자는동안 그 문제가 머리 속에 맴돌아서 밤늦게는 최대한 안풀려고 조심합니다. programmers.co.kr/ 시간이 좀처럼 나지 않아 틈날때 조금씩 하던게 이제 레벨1에서는 모든 문제를 끝내서 레벨 2 문제를 풀고 있습니다. 오늘도 그렇게 어려워 보이지는 않던 문제를 하나 골라 몇분만에 정확성 테스트를 모두 통과해서. 쉽게 해결하는 줄 알았는데, 프로그래머스 문제 풀때 가장 절망적인 순간 갑자기 까꿍 하고 등장한 효율성 테스트.. 그리고 결과적으로 이 문제 풀이에 소중한 주말을 모두 쏟아부었습니다. '더 맵게' 라는 문제였는데, 스포일러가 될까봐 자세한 내용은 담지 않..

Development/Fundamentals 2021.01.17