99클럽 코테 스터디 16일차 TIL
·
devlog/TIL
뜨문뜨문한 TIL...이대로 괜찮은가? 🤔 오늘의 문제백준 25757 – 임스와 친구들LeetCode - Number of 1 Bits백준 25757 – 임스와 친구들문제요약게임 종류(Y/F/O)에 따라 참여 인원 수가 다름 (2/3/4)중복된 닉네임 제거 후, 최대 몇 게임 가능한지 계산풀이 전략입력값을 받은 후, set으로 중복된 닉네임 제거게임에 따라 추가로 필요한 인원수를 dict로 저장 중복이 제거된 플레이어 이름에서 선택된 게임에서 필요한 인원수를 나눈값만큼 게임 플레이 가능 코드import sysprmpt = sys.stdin.readline().split()names = [sys.stdin.readline().strip() for _ in range(int(prmpt[0]))]games ..
99클럽 코테 스터디 11일차 TIL
·
devlog/TIL
오늘의 문제706. Design HashMap문제 요약직접 해시맵 구현하기 (내장 hashmap 라이브러리 사용X)key 범위: 0 최대 10^4번의 호출풀이 전략튜플 사용고정 크기 버킷 배열 사용: self.map = [...]충돌 해결 방식 → 각 버킷에 (key, value) 튜플을 리스트로 저장class MyHashMap: def __init__(self): self.size = 10000 # 10^4 operation 대비? self.map = [[] for _ in range(self.size)] def put(self, key: int, value: int) -> None: index = hash(key) % self.size f..
99클럽 코테 스터디 10일차 TIL
·
devlog/TIL
오늘의 문제LeetCode 347: Top K Frequent ElementsLeetCOde 2283: Check if Number Has Equal Digit Count and Digit Value문제 요약Top K Frequent Elements nums 배열에서 가장 많이 등장한 k개의 숫자 return (배열로) 시간복잡도 O(nlogn) 풀이 전략시간복잡도 O(nlogn) 이라, brute-force는 불가능Counter 함수와 Heap을 사용해서 풀이Counter 함수: 주어진 배열에서의 빈도수를 dictionary 형태로 생성 -> 시간복잡도 O(n)Heap: 빈도 높은 k개를 추출하기 위해 사용 -> 시간복잡도 O(nlogn) 코드from collections import Counterim..
NHN FORWARD 2022 발표 후기
·
devlog/conference
😅 25년에 올리는 22년도의 발표후기 (...) 22년도에 따끈하게 작성해두고 비공개 처리 해둔 글을 발견해서 다시 재발행 합니다... 유튜브 링크도 올라와서 추가했습니다! 내가 발표라니?!?!? 😵 한번쯤은 해보고 싶다..라는 생각이 들었었지만 이렇게 하게 될 줄은 몰랐다! 우당탕탕 준비 하기는 했지만 겪어 보고 나니 정말 좋은 경험을 했다!  NHN FORWARD??NHN에서 주최하는 기술 컨퍼런스이다. 2018년 부터 매년 주최하였고, 코로나로 인해 20년,21년은 온라인으로 진행되었다! BE, FE, 그리고 앱개발 등 기술적인 내용을 발표하는 자리이기도 하고, 라운지 토크 처럼 시간은 라이트하지만 내용은 알찬! 세션들도 준비되어있다. https://forward.nhn.com/2022 NHN..
99클럽 코테 스터디 9일차 TIL
·
devlog/TIL
문제BOJ 3986 - 좋은 단어🔍 문제 요약문자열에서 같은 알파벳끼리 짝을 지어야 함선이 교차하지 않도록, 즉 스택 구조처럼 처리해야 함모든 문자가 정확히 한 번만 짝지어지면 → "좋은 단어"📌 풀이 전략:문자를 하나씩 순회하며:스택이 비었거나 top이 다르면 → append()top과 현재 문자가 같으면 → pop()단어 순회 후 스택이 비어 있으면 → 좋은 단어로 카운트python에는 peek()이 없으므로, 배열 마지막 요소를 확인하는 것으로 대체👩‍💻 코드import sysn = int(sys.stdin.readline())count = 0for _ in range(n): word = sys.stdin.readline().strip() stack = [] for c in ..
[오브젝트] 01. 객체 설계
·
BE/BE
🔖  책에서 기억하고 싶은 내용절차지향에서의 객체는 수동적이며, 그저 데이터를 담는 존재일 뿐이다. 하지만 객체지향에서는 객체를 생명과 지능을 가진 능동적인 존재로 설계해야 한다.이 책은 단순히 "객체지향이란 무엇인가?" 에서 멈추지 않고, "어떻게 하면 좋은 객체지향 설계를 할 수 있을까?" 라는 고민을 해결해준다.훌륭한 객체지향 설계란 객체 간의 협력을 고려하면서, 의존성을 적절히 관리하는 설계다.어떤 설계든 정답이 존재하는 것은 아니지만, 객체의 자율성을 높이고 불필요한 의존성을 줄이는 것이 좋은 설계로 이어진다. "설계는 코드를 배치하는 것이다." 이 문장이 특히 인상적이었다.절차지향에서는 데이터와 절차가 분리되어 있지만, 객체지향에서는 데이터와 절차가 하나의 모듈 안에 공존한다.즉, 코드를 어..
🐳 Docker Desktop for Mac + JDK 17이 실행되지 않는 이유 deep dive!
·
DevOps/docker
최근 Docker Desktop for Mac 환경에서 JDK 17을 사용하는 Spring Boot 애플리케이션이 실행되지 않는 문제를 발견했다.이상한 점은 Windows 환경에서는 정상 실행되지만, Mac에서는 실행 후 바로 종료된다는 것이다."환경 차이 때문인가?" 🤔 하지만 Docker는 OS와 무관하게 동일하게 실행되어야 하는데, 왜 이런 문제가 발생한 걸까?정확한 원인을 찾기 위해 Deep Dive 해보았다.🔍 문제상황Mac에서 실행한 Docker Container의 로그를 확인한 결과,JVM이 컨테이너 내부 리소스를 감지하는 과정에서 NullPointerException 발생했다.java.lang.NullPointerException: Cannot invoke "jdk.internal.pl..
놀고있는 노트북으로 homelab을 꾸려보자-2
·
DevOps/etc
오늘의 설정 ⚒️✅ ubuntu-server 설치✅ 맥북 --> 홈랩 서버 원격 설정✅ 홈랩서버 클램쉘 모드 설정✅ k3s cluster 구성ubuntu-server 설치노트북 각각 ubuntu-server를 깔고, docker로 설치완료했다.ubuntu-server를 깔기 위해서는 ISO 이미지를 다운받아 bootable usb를 만들어야 한다!ubuntu-server ISO를 다운받는다https://etcher.balena.io/ 를 다운받는다 (ubuntu 오피셜 사이트에서 추천해 준 툴)다운받은 ISO 이미지를 선택 -> usb 드라이브 선택 -> usb드라이브에 설치되기까지 대기다운이 완료된 usb를 ubuntu-server를 설치하고자 하는 컴퓨터에 연결부팅 시 usb로 실행여튼 설치 완료했으..
놀고있는 노트북으로 homelab을 꾸려보자-1
·
DevOps/etc
나에게는 놀고 있는 노트북이 2대가 있다. 대학생 때 사용했던 HP 랩탑과 아버지에게 갈취(?) 했던 삼성 노트북. 2024년부터 사용하지 않는 짐 정리 대 프로젝트를 진행 중인 와중에, 이 두대의 노트북이 정말,, 눈엣가시처럼 사라지지도 않고 계속 거실장에 거치되어 있는 게, 나의 모든 움직임에 "감히 나를 그냥 둬?"라고 말하는 것 같은 느낌을 받았다. 새해가 되었으니, 새 마음으로 이 노트북을 보내줄까 하다가 보내줄수도 없고 (원하는 사람이 없을 듯), 이전부터 해보고 싶었던 Homelab 구축을 이거로 연습해 볼까?라는 생각이 들었다. 일단 내 노트북 두대의 스펙은 이렇다 삼성 노트북 운영체제: Windows CPU: Intel i7-3537URAM: 4GB저장공간: 256GBHP 노트북운영체제:..
[Leetcode] 110. Balanced Binary Tree
·
BE/algorithm
문제관련 토픽: DFS, Binary Tree, Tree난이도: Easy링크: https://leetcode.com/problems/balanced-binary-tree/description/요구사항주어진 Binary Tree가 height balanced 인 상태인지 확인height balanced = 두 서브트리의 높이의 차이가 1이상이 아닌 트리조건노드 개수 범위 [0, 5000]10^4 O(N) 시간복잡도 이전으로 풀어야 한다풀이모든 노드의 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이를 확인높이 차이가 1을 초과하면, 트리는 불균형하다고 판단, return FalseDFS방식으로 각 노드의 서브트리 높이를 계산하며 균형여부를 확인Stack으로 DFS를 풀이하니, 각 노드에 방문했는지 여부를 저장..
Eureka와 Eureka 설정방법
·
BE/BE
Eureka 란?Netflix가 개발한 서비스 디스커버리 툴MSA 아키텍쳐에서 각 인스턴스의 위치를 자동으로 찾고, 관리서비스 디스커버리?MSA에서 중요한 컴포넌트 → monolithic 에서는 서로의 인스턴스를 찾을 필요가 없었으니까!여러 서비스 인스턴스와 그 위치를 자동으로 탐지하고 관리하는 기능 → 분리되어있는 MSA 환경에서의 개발은 복합적인 MSA의 호출 발생서비스가 서로를 찾고 통신할 수 있도록 해주며, 수동으로 서비스 위치를 관리하는 복잡성을 낮춤!Eureka의 구성요소Eureka Server서비스 등록과 조회 기능을 제공모든 클라이언트가 서버에 등록을 해야함Eureka Client각 MSA 서비스E.g. product msa, order msa주요기능서비스 등록과 발견하트비트 매커니즘클라이..
[Leetcode] 121. Best Time to Buy and Sell Stock
·
BE/algorithm
문제: Best Time to Buy and Sell Stock 관련 토픽: Array, Dynamic Programming난이도: Easy 링크 https://leetcode.com/problems/best-time-to-buy-and-sell-stock요구사항prices 배열은 i번째 날짜의 주식의 가격을 담음정해진 하루에 주식을 사고, 주식을 산 시점 이후에 주식을 판매주식을 구매, 판매하며 어떤 조합이 가장 큰 수익을 낼 수 있는지 탐색수익이 발생하지 않는 경우에는 0을 반환  조건1 10만개의 요소를 다루는 문제는 효율적으로 풀이 하는 것이 좋다 O(n) ~ O(nlogn) 시간 복잡도의 풀이가 필요! 0 최대값,최소값을 구할 때 값 초기화의 기준으로 사용 가능풀이 문제 태그에는 Dynamic ..
[Leetcode] 21. Merge Two Sorted Lists + 그림 풀이
·
BE/algorithm
문제: Merge Two Sorted Lists관련 토픽: LinkedList, Recursion난이도: Easy 링크  https://leetcode.com/problems/merge-two-sorted-lists요구사항list1, list2 LinkedList를 정렬된 하나의 LinkedList로 합치기 list1, list2는 정렬된 LinkedList return 값의 list는 두 리스트를 기반으로 만든 값이어야 함 조건LinkedList의 노드 길이는 [0, 50]-100 list1, list2는 오름차순 정렬 (non-decreasing) 풀이이미 정렬된 리스트들을 하나로 합치기 위해서는 brute-forcing, LinkedList, recursion을 사용할 수 도 있음 여기에서는 Lin..
장비병 고치기 위한 온몸 비틀기 - 맥북 m1 에어 듀얼모니터 설정 (with LG 듀얼업)
·
IT Review
나에게는 오래된 병이 있다. 지병인데, 모든 분야에 나타나는 고칠 수 없는 병이다. "장비병"이라고,,,불치병을 앓고(?) 있다. 카메라, 키보드, 그리고 최근에는 캠핑용품으로 뻗어나가는 전적이 있는데, 오래전 부터 애플 장비도 여러 것들을 거쳐왔다. 퇴사를 하게 되면서, 잘 쓰던 16인치 맥북 프로를 보내고 개인용 노트북이 필요해져서 당시 따끈따끈한 m1 칩을 탑재한 맥북에어를 구매했다. 물론 개발, 유튜브, 웹 서칭 등등 모든 목적을 위한 노트북 구매였고, 당시에는 원모니터 또는 맥북 하나로만 개발하는 것에 맛 들렸어서 (이상한 미니멀리즘에 취했었음) `m1 에어는 하나의 디스플레이만 지원한다` 는 사실도 괜찮았다. 사고 한동안은 괜찮았다. 하지만 지금까지는 진짜 꾸역꾸역 아이패드 미니 (미니병에 도..
Kafka vs RabbitMQ & MSA환경에 kafka를 적용한다면? (with 예제코드)
·
DevOps/devops
대규모 시스템이란방대한 양의 데이터를 처리하고 수 많은 사용자의 요청을 동시에 처리할 수 있는 시스템이러한 시스템 설계는 확장성, 유지보수성, 성능, 안정성 등을 고려MSA 는 대규모 시스템 설계 아키텍쳐 패턴RabbitMQ,Kafka 같은 메시징 시스템을 활용하여 각 서비스 간의 효율적인 데이터 통신과 확장성을 보장메세징 시스템?Queue 형태로 메세지를 저장. 송신자 (Producer)가 메세지를 큐에 넣으면, 수신자(Consumer)는 자신의 속도에 맞춰 Queue에서 메세지를 처리.Message Broker를 사이에 두고, 송신자(Producer)와 수신자(Consumer)가 간접적으로 데이터를 주고 받음MSA 환경에 적용한다면송신자 (Producer): MSA에서 메세지를 발행하는 곳 (e.g...