본문 바로가기

분류 전체보기1068

[세미나] 왜 이렇게 코드를 짰을까? 제 코드의 선택과 이유들 (작성중) 작성중인 게시글 입니다. 2024-11-05 진행했던 세미나 입니다.세미나 특성상 사내 내부 코드가 많이 들어가 있어서, 그대로 올리질 못해 비슷한 예시 코드로 바꿔야하는데 총 90장짜리라 시간될 때 할 것 같습니다. 어쨌든 진행했던 세미나 기록용으로 올려두었습니다.  세미나 개요  저는 단순히 잘 돌아가는 코드보다, “왜 이렇게 짰어요?” 라는 물음에 답할 이유가 있는 코드가 더 가치 있다고 생각합니다. 물론 때로는 ‘일정이 바빠서요’와 같은 현실적인 이유도 이유가 될 수 있습니다.이번 세미나에서는 최근 프로젝트를 진행하며 했던 선택과 그 이유를 회고하며, 제가 코드를 작성하며 했던 고민과 선택의 이유들을 공유해보려 합니다.다소 어려운 얘기가 될 수 있고, 어느정도 개발 지식이 없다면 이해 못하실 가능.. 2024. 11. 21.
[Study 019] 토비의 스프링 3.1 스터디 주제   토비의 스프링 3.1 Vol.1  참가자https://github.com/nahwasa외 6명 일정 (완료)1주차 - 2024-06-29 ~55p2주차 - 2024-07-06 56p~102p3주차 - 2024-07-13 103p~143p4주차 - 2024-07-20 144p~183p5주차 - 2024-08-03 184p~231p6주차 - 2024-08-10 232p~278p7주차 - 2024-08-24 279p~315p8주차 - 2024-08-30 316p~375p9주차 - 2024-09-21 376p~429p10주차 - 2024-09-28 430p~475p11주차 - 2024-10-05 476p~556p12주차 - 2024-10-26 557p~645p13주차 - 2024-11-02 64.. 2024. 11. 9.
[자바] 백준 1377 - 버블 소트 (java) 목차문제 : boj1377  필요 알고리즘애드혹 (ad-hoc)뭔가 알고리즘이 필요한건 아니고, 이 문제만의 규칙(아이디어)을 찾아 해결하는 애드혹 문제이다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  거의 3~4개월만에 문제를 풀어봤다! 역시 알고리즘이 재밌긴하다. 결국 N과 배열이 주어졌을 때, 버블소트가 총 몇 번 돌아야 해결되냐? 를 묻는 문제이다. 풀이를 말로하면 엄청 쉽긴한데, 아무래도 아이디어 문제다보니 티.. 2024. 9. 23.
[Study 020] 자바/스프링 개발자를 위한 실용주의 프로그래밍 스터디 주제 '자바/스프링 개발자를 위한 실용주의 프로그래밍'를 읽고 매주 모여서 토론 및 질문  참가자https://github.com/nahwasahttps://github.com/ohgillwhanhttps://github.com/woogiekimhttps://github.com/K-jun98  일정 (진행중)1주차 2024-08-08 1~3장 2024. 8. 1.
[Study 018] Release의 모든 것 스터디 주제 'Release의 모든 것 : 대규모 웹 분산 시스템을 위한 운영 고려 설계'를 읽고 매주 모여서 토론 및 질문  참가자https://github.com/nahwasahttps://github.com/ohgillwhanhttps://github.com/woogiekimhttps://github.com/K-jun98  일정 (완료)1주차 2024-04-11 1장~3장2주차 2024-05-02 4장3주차 2024-05-09 5장, 6장(정리 해야함)N주차 2024-08-01 4부 완료  내용 정리[릴리즈의 모든 것] 1장. 운영 환경의 현실[릴리즈의 모든 것] 2장. 사례 연구: 항공사를 멈추게 한 예외[릴리즈의 모든 것] 3장. 시스템 안정화 2024. 8. 1.
[Study 017] 디자인 패턴의 아름다움 스터디 주제   디자인 패턴의 아름다움(완정 저)매주 정해진 챕터 각자 읽고와서, 게더타운에서 온라인으로 서로 토론 및 이해안되는 부분 질문. 혹은 뭐 추가로 설명할꺼 있으면 자료 준비해와도 됨 (추가 설명 예시 : https://nahwasa.com/entry/TDD-Mock-SOLID-얘기-도시-가스-요금-계산)  참가자https://github.com/nahwasahttps://github.com/mluluckyhttps://github.com/gwonsiyunhttps://github.com/daraekitahttps://github.com/covertOta 일정 (완료)1주차 2024-02-17 : 1.1 코드 설계를 배우는 이유 / 1.2 코드 품질 평가 방법 (전체적인 내용을 다루는 1장이다.. 2024. 6. 21.
[자바] 백준 2734 - 드럼통 쌓기 (java) 목차문제 : boj2734  필요 알고리즘기하학기하학 문제이다... 수학 어렵다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  입력으로 쓰레기통의 가장 아래에 있는 N개의 드럼통이 주어진다. 그리고 항상 그 윗줄에는 N-1개의 드럼통이 있다고 했고, 그런식으로 위로 쌓다가 가장 위 1개의 드럼통의 (x,y)를 구하는 문제이다.   그래서 풀이자체는 간단한데, N개의 입력이 주어지면 최종적으로 남은게 1개일 때 까지 다음을.. 2024. 5. 27.
[자바] 백준 18436 - 수열과 쿼리 37 (java) 목차문제 : boj18436  필요 알고리즘세그먼트 트리, 펜윅 트리, 제곱근 분할법위 알고리즘 혹은 자료구조 중 아무꺼나 쓰면 된다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  세그먼트 트리, 펜윅 트리, 제곱근 분할법 등 풀 수 있는 방법은 많다. 아무튼 단일 업데이트, 범위 쿼리를 유효한 시간 내에 처리 가능한 코드를 짜면 된다. 이하 코드는 펜윅 트리를 사용해 풀었다. 펜윅트리에 대한 설명은 '이 글'에서 볼 수.. 2024. 5. 24.
[자바] 백준 2026 - 소풍 (java) 목차문제 : boj2026  필요 알고리즘브루트포스, 백트래킹백트래킹을 써서 모든 경우를 살펴보면 된다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  그냥 백트래킹 섞어서 브루트포스로 해보고 안되면 다른 방법을 찾으려고 했는데 통과됬다. 초기 명분(?)은 어차피 최악의 경우 K가 62일 경우, 최소로 필요한 간선은 62*61 = 3782개인데 F가 최대 5600이라서 최악의 경우라도 5600개 중 3782개가 쓰여야 되므.. 2024. 5. 23.
[자바] 백준 21610 - 마법사 상어와 비바라기 (java) 목차문제 : boj21610더보기  필요 알고리즘시뮬레이션제시된 대로 구현하면 된다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  그냥 문제에 제시된대로 구현하면 되서 풀이는 필요없을 것 같다. 이하 코드는 그냥 풀긴 좀 심심할 것 같아서 2차원 배열을 쓰지 않고 풀어봤다. 그러니 2차원 배열 안쓰고 푸는걸 참고하려면 코드를 확인해보자. 각 단계별로 처리하는 코드는 주석을 달아두었다. 2차원 배열로 문제에 제시된대로 구현.. 2024. 5. 23.