최신 글
[Python/백준] 1749_점수따먹기 (누적합)
[Python/백준] 1749_점수따먹기 (누적합)
Python
2025.02.06 22:04
https://www.acmicpc.net/problem/1749" style="background-color: #ffffff; color: #000000; text-align: start;" data-ke-size="size26">2차원 누적합을 사용하면 된다. DP랑 비슷하니까 겁낼 필요가 없고 이해만 하면 완전 쉬운 로직이다.(시간초과 때문에 python3 말고 PyPy3로 제출하자)2차원 누적합 테이블 만들기현재 위치의 값 더하기 board[i-1][j-1]위쪽 영역의 누적 합 더하기dp[i-1][j]왼쪽 영역의 누적 합 더하기dp[i][j-1]중복된 부분 빼기- dp[i-1][j-1]# 누적 합 구하기for i in range(1, N + 1): for j in range(1, M + 1)..
나는 성장 지향적인 태도를 가지고 있는가?
나는 성장 지향적인 태도를 가지고 있는가?
나는 리펙토링중
2025.01.15 22:09
좋은 코드란 무엇인가라는 질문은 단순한 듯 하지만 깊은 성찰을 요구하는 주제였다. 면접에서 질문을 듣는 순간까지도 '당연한 질문 아닌가'라는 생각을 했다. 그렇지만 면접관의 의도, 대답의 방향성, 면접관의 주관적인 가치를 고민하며 평소 생각을 하지 않고 살았구나를 느꼈다. 나는 생각을 하는 사람인가? 좋은 코드에 대한 고찰은 깊은 심연과 같이 느껴진다. 성능 지향적인 코드와 유지보수성이 높은 코드 사이의 균형은 단순한 기술적 선택을 넘어서는 것 같다. 돌잔치 아기 앞에 놓인 수많은 물건처럼 어떤 것을 골라도 틀리지 않은 답인 거 같다. 물건의 가치도 중요하지만 물건에 부여된 의미가 더 중요하다는 뜻이다.  나의 생각이 깊어질수록 내가 나이를 들어감에 따라 깊은 생각을 항상 유지할수 있다면, 처음에는 당연..
[Spring/Batch] Spring Batch Domain Language of Batch
[Spring/Batch] Spring Batch Domain Language of Batch
Batch
2025.01.09 21:23
이번글은 Spring Batch에 관한 글이다.SpringBatch는 Spring 생태계에 입문했다면 한번쯤 듣게되며 주로 대용량 처리에서 듣게 된다.Spring Batch 5.x.x version으로 진행할 것이며 이번글은 이 SpringBatch 카테고리의 2번재인 핵심 객체 및 관계에 대한 정의를 다뤄보려고 한다. 기본적인 개념을 다루기 때문에 코드에 대한 깊은 설명을 진행하지 않는다.공식 문서를 참고했다. Configuring a Step :: Spring BatchAs discussed in the domain chapter, a Step is a domain object that encapsulates an independent, sequential phase of a batch job and..
[Dep/Jenkins] Jenkins 설치 & 기초 설정 (docker) [2]
[Dep/Jenkins] Jenkins 설치 & 기초 설정 (docker) [2]
Jenkins
2024.12.11 13:36
이번글은 Jenkins설치에 관한 글이다.아래 링크에서 왜 CI/CD가 현대 개발 사회에서 필수적인지 설명했다.이번엔 CI/CD의 점유율 44%를 가지고있어서 래퍼런스가 많고 생태계가 잘 구성되어 있는 Jenkins에 대해서 설치해보자설치는 Docker를 통한 과정을 보여주겠다. Docker관련 설명또한 블로그에 정리되어있으니 처음 접한다면 선수과정으로 가져가는 것도 좋다.점유율 출처 및 CI/CD 설명 Jenkins Project Reports Growth of 79% in Jenkins Pipeline, Used to Speed Software Delivery - CD FoundationJenkins Pipeline usage grew 79% from June 2021 – June 2023, whil..
[Dep/Jenkins] CI/CD [1]
[Dep/Jenkins] CI/CD [1]
Jenkins
2024.12.11 10:59
이번글은 CI/CD에 관한 글이다.논리적인 접근 및 타당성에 집중해서 글을 작성해보려고 한다.근데왜 Jenkins목록에 있냐면 Jenkins를 공부하는것이 궁극적인 목표이고 이를 위한 초석은 CI/CD에 대한 정의를 알고가야 하기때문에 글을 작성하려고 한다.Jenkins에 대한 글은 추후 작성된 글을 참고하면 된다.CI/CD1. CI/CD는 왜 필수적인가?소프트웨어 개발 환경은 점점 복잡해지고 있다. 이에 따라서 빠른 출시와 품질 유지 사이에서 균형을 맞추는 것이 중요하다. 기존 개발 방식에서는 다음과 같은 단점을 가진다.레거시 방식의 단점수작업 기반의 빌드와 배포 :- 사람이 개입하는 단계가 많아 실수가 발생할 수 있다.- 여러 개발자의 코드를 정상적으로 합치는 과정 혹은 모듈을 합치는 과정에서 시간 ..
백준 문제 추천 서비스
[백준 문제 추천/개발 일지] (5) 추천 시스템 구성 + 코드 리팩토링
[백준 문제 추천/개발 일지] (5) 추천 시스템 구성 + 코드 리팩토링
개발일지
2024.07.01 10:33
예비군을 다녀오면서 잠시 손을 놨었는데 다시 하기가 지~~~~~인~~~짜 귀찮았다. 근데 해야지 하고 막상 앉아서 하니까 재미있어서 계속만들게 됐다. 생각보다 빨리 되서 기분 좋긴한데 내 수학적 능력이 좀 부족해서 추천 알고리즘을 좀더 깔꼼하게 작성하지 못한거 같아서 나중에 보정할 생각이다.또한 좋은 문제라는 것이 뭘까 고민한 시간이기도 하다 많은 사용자정답을 많이 맞춘 문제? 정답률이 60% ~ 30%사이에 있는 문제? 시도한 사람이 많은 문제? sovled.ac는 사람들이 평가를 해주는 커뮤니티 형식으로 되어 있고 나는 이 사이트를 따라가는 사람이니 많은사람이 맞춘만큼 많은 정보가 있어 랭킹이 정확히 매겨질 확률이 높은 그리고 많은 사람이 관심을 가지는 문제가 좋은 문제라고 판단했다.더보기개인적 사정..
[백준 문제 추천/개발 일지] (4) Mapping table 중복 문제  + api호출 요청을 줄이기 위한 노력?
[백준 문제 추천/개발 일지] (4) Mapping table 중복 문제 + api호출 요청을 줄이기 위한 노력?
개발일지
2024.06.13 02:23
sovled.ac에 호출을 적게하려고 노력하다보니 생각할것이 많아졌다. 확실히 내 로직은 빠른데 데이터값을 받아오는데 시간이 걸린다. 중복처리를 안하고 설계를 했다보니 db에 중복으로 데이타가 들어간걸 보고 맨붕 그래서 중복처리 하는김에 로직도 조금씩 리펙토링 했다. 정리가 잘안되서 두서없이 글쓸꺼 같아서 죄송합니다.더보기요즘 올드팝에 빠졌는데https://youtu.be/ZDc-q3Hnldk?si=H_MYjnDW97SUlqVU들으면서 봐주시면 좋겠습니다.api로 user가 푼문제 받아 problem이랑 mapping해서 DB에 저장하기 간단 로직 설명1. GET /solved/user@GetMapping("/user") public void fetchAndSaveUser() throws IOExc..
[백준 문제 추천/개발 일지] (3) 문제 DB에 저장하기 + tag랑 Mapping하기
[백준 문제 추천/개발 일지] (3) 문제 DB에 저장하기 + tag랑 Mapping하기
개발일지
2024.06.11 14:12
백준 문제 추천db를 만지다가 애를 먹었다. ManytoMany를 사용하는 바보같은 코딩을 하다가 정규화를 해야한다는걸 늦게나마 자각하고 다시한번 설계의 중요성을 느꼈다. jpa에 여러가지 기능이 있는거 같은데 일단 시간이 없으니 나중에 리펙토링할 때 한번 사용해보자고 생각하며 마무리했다.sovled.ac api로 Problem 받아 DB에 저장하기간단 로직 설명1. GET /solved/problem@GetMapping("/problem") public void fetchAndSaveProblem() throws IOException, InterruptedException { int start = 1000; int end = 31980; int batchSiz..
[백준 문제 추천/개발 일지] (2) 문제 Tag DB에 저장하기 + 회고
[백준 문제 추천/개발 일지] (2) 문제 Tag DB에 저장하기 + 회고
개발일지
2024.06.04 00:03
백준 문제 추천Json을 사용해서 데이터 처리를 처음 해봤다. 공식 문서를 읽고 했는 데도 데이터가 잘 안떠서 내가 만들면서 잘못한 점도 적으려고 한다. 또한 solved.ac의 api를 사용하는 만큼 호출을 적게 해야하는데 이에 대한 고민도 생각해 봐야겠다. sovled.ac api로 Tag 받아 DB에 저장하기간단 로직 설명1. GET /solved/tagpublic class SolvedAPIController { private final ProblemTagService problemTagService; //24-06-03날자상 206개의 tag존재 5page까지 가져오면 됨 @GetMapping("/tag") public void fetchAndSaveProblemTag() ..
[백준 문제 추천/개발 일지] (1) 개발 이유 + sovled.ac API 사용하기
[백준 문제 추천/개발 일지] (1) 개발 이유 + sovled.ac API 사용하기
개발일지
2024.06.01 00:49
백준 문제 추천 알고리즘 스터디를 하다보니 다양한 실력을 가진 사람들을 만난다. 나보다 훨씬 뛰어난 실력으로 문제를 풀어가는 사람이 있는가 하면 내가 어떤 문제를 풀어보면 좋을 것 같다고 추천을 해줄 수 있는 사람들도 만난다. 근데 나를 포함한 이들의 모든 공통점이 어떤 문제를 풀어야 할지 고민을 한다. 자신의 실력대가 어디에 있는지, 자신의 실력대에 풀면 가장 좋은 문제가 뭔지, 어떤 알고리즘을 공부하고 싶은데 어떤 문제를 풀어야 하는지 고르기 힘들어 하거나 모른다. 이런 문제를 추천해주는 블로그, 포스트글 같은건 엄청 많다. 하지만 문제를 풀라고 하는 사람의 개인에 맞춘 추천을 해주지 않는다. 나는 그래서 사용자 개인에게 맞춤 문제 추천 사이트를 만드려고 한다. 요구사항1. 개인의 실력에 맞춘 추천 ..
코인 거래 게임
[멋쟁이사자처럼 백엔드 TIL/ 그때 살껄;;..] 시스템 아키텍처
[멋쟁이사자처럼 백엔드 TIL/ 그때 살껄;;..] 시스템 아키텍처
개발일지
2024.09.09 15:33
1. 전체 아키텍처 설명GCP(google cloud), AWS를 사용해서 프론트엔드, 백엔드, 데이터베이스가 분산된 클라우드 환경에서 통합되어 동작하는 시스템이다. 각 시스템들은 모두 docker위에서 실행되며 언제든지 재실행, 복구가 될 수 있도록 dockerfile, voulume을 설정해뒀다.사실처음에는 aws ec2 프리티어만 사용해서 모든걸 올리려고 시도했었다. 하지만 프리테어에서 제공되는 ram은 1GB, 정상적으로 작동되는 서비스에서 늘릴수있는 가상ram 2GB를 합쳐도 카산드라 혼자먹는 2.7GB의 ram을 감당할수 없기 때문에 gcp로 분리를 하기로 했다. 이번프로젝트에서 느낀 aws과 gcp의 차이가 있다.aws : 성능이 매우 제한적 제한적인만큼 비용이 매우 적게듬 프로젝트 배포가 ..
[멋쟁이사자처럼 백엔드 TIL/ 그때 살껄;;..] 거래 시퀀스 다이어그램
[멋쟁이사자처럼 백엔드 TIL/ 그때 살껄;;..] 거래 시퀀스 다이어그램
1. 서론내 코드의 동작 방식을 가장 직관적으로 설명할 수 있는 방법으로 시퀀스 다이어그램을 선택했다. 원래같은 경우에는 Object도 전부 클레스로 찢고 메서드와 파라미터까지 다 표시해줘야하시만 시간상 그건 안될 것 같고 부분적으로 보여줘도 충분하겠다 싶어서 간단하게 작성했다. 그럼 시작하겠다.2. 구매 주문request를 받아올때 이미 시큐리티에서 사용자 인증을 받기도 하지만 한번더 검사하는 방식을 선택했다. 거래에서 에러가 나면 위험하다 생각했다.컨트롤러에서 주문을 받는다주문을 ranscationService에 넘겨서 맞는 구현 클래스로 넘긴다Impl에서 로직을 처리한다.여기서 중요하게 봤던 점은 @Transcation이다. Jpa는 트렌젝션이 먹어서 괜찮지만 카산드라는 트렌젝션이 통하지 않는다. ..
[멋쟁이사자처럼 백엔드 TIL/ 그때 살껄;;..] 디스코드 Github 알림
[멋쟁이사자처럼 백엔드 TIL/ 그때 살껄;;..] 디스코드 Github 알림
개발일지
2024.08.26 22:17
1. PR 생성했습니다!지금 프로젝트를 디스크도 공통 톡방에서 진행하고있는데 따로 적어두는 공간이 없다보니까 pr이 다른 대화 내용에 의해서 묻혀버리고 있었다. 카톡으로 알린다고 해도 한계점이 있었다.컴퓨터를 키고 있지 않으면 디스코드를 보고 있는 사람들이 적다는 점commit, review 등을 달때도 직접 알려다 된다는거모두가 코드 리뷰를 열심히 하자는 의미에서 모두가 aprove해야 pr이 합병되도록 변경해 pr을 즉각 확인해야 작업속도가 올라간다는 거이런걸 간단하게 해결하는 방법 discord를 따로 파는 것 아래 사진처럼 따로 디스코드 채널을 만들었다.그럼이제 github에서 자동으로 오는 알람을 받아보자2. Discord 설정서버 설정으로 들어가자웹후크를 설정하자새 웹후크를 누르면 이런식으로 ..
[멋쟁이사자처럼 백엔드 TIL/ 그때 살껄;;..] 거래 시스템 설계
[멋쟁이사자처럼 백엔드 TIL/ 그때 살껄;;..] 거래 시스템 설계
개발일지
2024.08.17 22:30
1. 서론프로젝트에서 가장 중요한 부분중 하나라고 생각한다. 코인 거래 관련 사이트인 만큼 코인 거래 로직은 설계 단계를 깊게 고민해 봐야 한다고 생각했다. 어떤 알고리즘을 사용해야하는지 그리고 그것의 장단점을 통해서 내가 만드는 프로그램이 단점을 보완하고 장점은 살릴수 있는지 그리고 어떤 소프트웨어를 사용해야 내가 생각한 로직을 잘 녹여낼 수 있는지 고민했다. 오늘은 그것들에 대해서 설명해보려고 한다.2. 거래 로직 설계내가 개발하고 있는 거래 프로그램은 이러하다진짜 거래가 아니다.거래소를 만드는 것이 아니라 코인의 가격이 매수 혹은 매도 가격 닿으면 바로 채결이 된다.즉 구매자가 진짜 판매자 한테 사는것도 아니고 판매자가 진짜 구매자한테 파는 것도 아니다.구매와 판매를 연결해줄 필요가 없다.이는 거래..
[멋쟁이사자처럼 백엔드 TIL/ 그때 살껄;;..] Auth + Test + CORS + Header + Swagger Error
[멋쟁이사자처럼 백엔드 TIL/ 그때 살껄;;..] Auth + Test + CORS + Header + Swagger Error
개발일지
2024.08.09 01:12
// Axios 인스턴스 생성const api = axios.create({ baseURL: API_BASE_URL, withCredentials: true, // 모든 요청에 대해 withCredentials: true 설정});1. 서론엄청난 에러들과 싸운 그리고 프론트엔드에서 고생을 많이한 분기점 프론트엔드에서 고생을 해서 깊게는 아니지만 얻어간것이 많다. 개발 시간과 공부 시간의 간극을 줄이는 것이 이번 프로젝트에서 가장 신경써야하는 점. 어느정도 이해하고 이 기술을 사용할 것인가가 나의 전두엽을 계속 자극한다. 그럼 시작해보겠다.2. Facade [SW/DP] Facade Pattern (퍼사드 패턴)정의복잡한 시스템에 대해서 간단한 인터페이스를 제공해서 시스템을 이용하는 사용 객체가 단일 ..
Coding Test
[Python/백준] 1749_점수따먹기 (누적합)
[Python/백준] 1749_점수따먹기 (누적합)
Python
2025.02.06 22:04
https://www.acmicpc.net/problem/1749" style="background-color: #ffffff; color: #000000; text-align: start;" data-ke-size="size26">2차원 누적합을 사용하면 된다. DP랑 비슷하니까 겁낼 필요가 없고 이해만 하면 완전 쉬운 로직이다.(시간초과 때문에 python3 말고 PyPy3로 제출하자)2차원 누적합 테이블 만들기현재 위치의 값 더하기 board[i-1][j-1]위쪽 영역의 누적 합 더하기dp[i-1][j]왼쪽 영역의 누적 합 더하기dp[i][j-1]중복된 부분 빼기- dp[i-1][j-1]# 누적 합 구하기for i in range(1, N + 1): for j in range(1, M + 1)..
Python/백준] 17837 새로운 게임 2
Python/백준] 17837 새로운 게임 2
Python
2024.06.12 23:54
https://www.acmicpc.net/problem/17837구현 문제이다. 자료구조 선택이 중요한거 같다. 시간을 매우 짧게 줬고 공간을 매우 넓게 주었음으로 공간을 최대한 활용해서 시간을 줄이는 것이 키포인트 이다.나는 2차원 stack 공간 pieceOnBoard  + 2차원 색을 저장할 체스판  board + 각각의 체스말의 위치 저장 리스트 pieces를 사용해서 풀었다.처음에는 빨간색 칸으로 이동할때 stack를 사용해서 현재 체스말 위치칸에서 pop하고 다음에 위치하게 될 체스말 위치칸으로 append하는 식으로해서 반대로 돌리고흰색으로 갔을땐 que를 사용해서 앞에서 부터 뺄까 생각했는데 이동하지 않는 말이 앞에 위치할 수 있어서 그리고 한칸에 많아봤자 3개의 stack만 지우면 되서..
[코딩테스트 준비] Python 예제 입력 빠르게 하기
[코딩테스트 준비] Python 예제 입력 빠르게 하기
Coding Test
2024.01.08 20:42
너무나도 귀찮다 BFS,DFS문제풀때 맨날 콘솔에다가 값 적는거 너무나도 귀찮다.디버깅할때 예제 입력하는거 너무 짜증나지 않는가?그래서 만들었다.input.txt파일을 이용해서 빠르게 입력 하기일단 나같은 경우는 폴더 구조를 이런식으로 만들었다. 백준 폴더안에 코딩 테스트 문제들(py 파일들이 들어 있고) 예제 값을 입력하는 txt파일이 상위 폴더에 존재한다.만약 코딩테스트 문제파일과 input파일이 같은 폴더에 존재한다면 file_path = "../input.txt"에서 .하나 빼서file_path = "./input.txt"이렇게 적어주면 된다.# 파일 경로 지정file_path = "../input.txt" # 상위 폴더에 있는 경우 상황에 맞게 경로를 조절해주세요.# 파일 읽어오기 (인코딩을 ..
Python/백준] 5972 택배 배송
Python/백준] 5972 택배 배송
Python
2024.01.02 22:20
https://www.acmicpc.net/problem/5972 5972번: 택배 배송농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는www.acmicpc.net데이크스트라 문제이다.bfs랑 비슷하게 풀면되는데 어떤 노드에 도착할때 방문하는데 사용한 비용이 더 낮다면 그노드부터는 한번더 탐색하는 방식이다.1번 노드에서 출발한다 1번노드 방문하는데는 0의 비용이든다.1번에서 2,4번으로 이동한다. 2노드로 가는데에는 1의 비용이 들고 4의 노드로 가는데에는 4의 비용이든다.2번,4번노드에서 이동한다. 2에서 1로 가려는데 1로 가는 최소 비용이 0이라 2보다 큼으로 못간..
Python/백준] 8980 택배
Python/백준] 8980 택배
Python
2023.12.27 19:14
https://www.acmicpc.net/problem/8980 8980번: 택배입력의 첫 줄은 마을 수 N과 트럭의 용량 C가 빈칸을 사이에 두고 주어진다. N은 2이상 2,000이하 정수이고, C는 1이상 10,000이하 정수이다. 다음 줄에, 보내는 박스 정보의 개수 M이 주어진다. M은 1이www.acmicpc.net그리디 문제이다.상자들을 보내는 마을로 heapq를 사용해서 정렬해 받는다.어떤 마을에 도착했을 때 받을 수 있는 택배 상자를 차에서 내린다.이제 보낼 상자를 택배에 올려야한다 일단 보내는 마을의 상자는 받아서 택배에 싣는다.만약 상자를 넣었는데 최대 용량 초과라면 가장 늦게 주는 마을의 택배량을 초과량만큼 줄인다.줄였는데도 초과용량이 남았다면 그다음 늦게 주는마을 줄이는 방식이다i..
728x90
반응형
image