분류 전체보기
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoP3MQ%2FbtsLI2xgjyJ%2FA7S3O19SgSdwW0mgMDQq1K%2Fimg.png)
어떻게 알고리즘 문제 하나에 코드가 151줄?
https://school.programmers.co.kr/learn/courses/30/lessons/84021 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 프로그래머스 Lv3. 퍼즐 조각 채우기작년에 풀다말았던 문제를 다시 풀어보았다.왜 풀다 말았는지 알 것 같다.요약하자면 table에 놓인 조각들을 game_board에 딱 맞게 최대한 많이 테트리스하면 되는 문제이다.하지만 테트리스는 조각을 돌려가며 끼울 수 있다는 점~ 어떻게 풀지?불규칙한 조각들을 하나씩 돌리는 것 보단 고정된 game_board를 돌리는게 나아보인다.퍼즐조각을 끼웠을 때, 인접한 칸이 비어있으면 안되므로 특정 조각이 들어갈..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUd7sU%2FbtsDVoBBQ6e%2FnZUmIVlwa7w8K8H2uC0Kk0%2Fimg.png)
[대규모 시스템 설계 기초] ch1. 사용자 수에 따른 규모 확장성
본문은 '가상 면접 사례로 배우는 대규모 시스템 설계 기초’를 읽고 정리한 내용을 기반으로 작성된 글입니다. [단일 서버] ☑️ 단일 서버 구성에서의 사용자 요청 처리 흐름 사용자는 도메인 이름(api.site.com)을 통해 웹사이트에 접속함 이 접속을 위해서는 도메인 이름을 DNS(Domain Name Service)에 질의하여 IP주로 변환하는 과정 필요 DNS는 보통 제 3사업자(third party) ↔ 우리 시스템의 일부는 아님 DNS 조회 결과로 IP주소 반환 (15.123 …) 해당 IP주소로 HTTP(HyperText Transfer Protocol) 요청이 전달됨 요청을 받은 웹 서버는 HTML페이지나 JSON형태의 응답 반환 [데이터베이스] 사용자가 늘면 서버 하나로는 충분하지 않아서..
[Spring/fairer] 반복 기능 api 개발 - 조회
반복 기능 구현 방법을 설계하고, 나는 조회 api를 담당했다. 반복기능 구현 전 집안일 api 에서도 조회를 담당했는데, 굉장히 비효율적으로 구현했던 전적이 있어서 이번에는 개선해 보고자 도전했는데 … fromDate ~ toDate에 속한 집안일을 조회하려면 반복 종류에 따라서 ONCE (반복x) scheduled_date가 조회 범위 안에 속하는지 확인 DAILY (매일 반복) scheduled_date ~ end_date가 조회 범위와 겹치는 구간이 있는지 확인 repeat_exception 테이블에 조회할 날짜가 등록되어 있는지 확인 WEEKLY (요일 반복) scheduled_date ~ end_date가 조회 범위와 겹치는 구간이 있는지 확인 (repeat_pattern에 저장된 요일 == ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4TtDQ%2FbtrWPJ8BQW6%2FYOuueMH2U3lktQfKOp2Lsk%2Fimg.png)
[Spring/fairer] 반복 기능 api 설계
반복 기능은 fairer를 개발하며 가장 신경써야할 부분이 많았던 기능이다. 일/주/월 단위로 반복되는 집안일을 관리해야하고, 수정&삭제를 할 때에도 반복 일정 모두 삭제/오늘 일정만 삭제/ 앞으로 예정된 집안일만 삭제 등 선택지가 많았다. 반복기능을 어떻게 개발할 것인지 설계하는 데에만 몇 주를 사용했던 것으로 기억한다. 4명의 의견이 모두 달랐어서 신기했고, 배울점도 많았던 기능이다. 의견1 새로운 테이블을 추가하지 않고, 기존 housework 테이블에 주기 칼럼만 추가 생성 : 기존 집안일 생성과 동일, 주기 칼럼에 주기만 추가하여 생성 조회 : 해당 날짜에 포함되는 집안일(반복x) 조회 반복되는 집안일 중 반복 요일이 같고, 시작 날짜~종료 날짜 안에 해당 날짜가 포함된 집안일 조회 수정 : 집..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclsKhL%2FbtrKGyRMZqs%2FYqkYhA9o5epwhxvjS96OzK%2Fimg.png)
[TIL/adone] 2022-08-25~26 dto 디렉토리 구조 변경, @Embeddable
1. dto 디렉토리 대규모 수정 서비스에 estimate(견적)에 관련된 기능이 가장 많은데, dto 구조가 필요 이상으로 복잡하고 가독성이 떨어진다 생각이 들었다. 합칠 수 있는 dto는 합치고, request/response 위주로 분리했다. 매우 헷갈리고.. 오래 걸렸지만 훨씬 깔끔해진 것 같아 뿌듯하다. 2. 유저가 디자인한 간판 생성 api 😇 save the transient instance before flushing : FK 로 사용되는 컬럼값이 없는 상태에서 데이터를 넣으려하면 발생하는 에러이다. → 나는 진짜로 데이터가 없어서 발생했는데, 연관 관계 매핑해줄 때 사용하는 @ManyToOne, @OneToOne, @OneToMany 어노테이션에 cascade옵션을 변경하면 해결 할 수 ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmujjy%2FbtrKsEMus2C%2FZbA0UBVHRS81irbPQjO9v0%2Fimg.png)
[TIL/adone] 2022-08-23~24 API 설계, @Builder.Default, Swagger 설정
1. 보안그룹 설정, RDS 연결, 탄력적 IP 할당 RDS 보안그룹의 인바운드 규칙을 추가하여, RDS를 생성한 IP주소 외에서도 접근 가능하도록 바꿔주었다. 3306 포트의 IPv4, IPv6 규칙을 추가해주어야 한다. 탄력적 IP도 할당해주었다. 2. 기능명세 + 코드 파악 하나의 화면에서 여러개의 API를 호출하는데, 각각 다른 controller에서 호출하는 것 보다는 하나의 controller로 묶는 것이 좋아보인다. member_role은 하나의 칼럼으로 처리하는 것이 편할 것 같다. 도메인 디렉토리가 estimate → requestEstimate → SignboardInfo로 구성되어 있는데, 간판 객체는 그냥 별도의 디렉토리로 분리하는게 나을 것 같다. service 로직에서 다른 도메..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcC6H9e%2FbtrIjO3phZK%2FpDLzRBmITxbdITTG99pX40%2Fimg.png)
[Spring/Data JPA] 인터페이스 기능
😊 순수 JPA 기반 레포지토리 만들기 ▪ 순수 jpa 기반 레포지토리 @Repository public class MemberJpaRepository { @PersistenceContext private EntityManager em; public Member save(Member member) { em.persist(member); return member; } public void delete(Member member) { em.remove(member); } public List findAll() { return em.createQuery("select m from Member m", Member.class) .getResultList(); } public Optional findById(Long..
[Java] 백준 #1463 1로 만들기
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 정수 X에 사용할 수 있는 연산 세 가지를 적절히 사용해서 정수 N을 1로 만든다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 연산 사용 횟수의 최솟값 구하기 💡 알고리즘 다이나믹 프로그래밍 💡 접근 RGB거리처럼 모든 케이스의 계산횟수가 동일한 문제가 아니므로, 배열만으로는 해결하기 어려울 것 같다. → 재귀함수를 작성하고, 전역변수를 통해 최솟값을 관리하자. 💡 코드 package DP; import java.io.BufferedReader; imp..
[Algorithm/Java] 다이나믹 프로그래밍 복습
DP문제 해결 과정 = 규칙을 찾아 점화식 세우기 큰 문제를 작은 문제로 나눌 수 있다. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다. 처음엔 감이 안잡히므로.. 그냥 몇문제 답을 보고 시작하는게 효율적이다. 💡 ex1. RGB거리 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 주어진 비용으로 N개의 집을 빨, 초, 파로 칠하는데 N번 집은 N-1, N+1번 집과 색이 같으면 안된다 집을 칠하는 최소..
[Java] 백준 #10825 국영수
https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 학생 N명의 국, 영, 수 점수 학생 성적 정렬하기 국어 점수 감소하는 순서 국어 점수 같으면 → 영어 점수 증가 국어, 영어 같으면 → 수학 점수 감소 모두 같으면 이름 사전순 증가 (모든 대문자는 소문자 앞에) 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다. 💡 알고리즘 정렬 💡 접근 객체를 정렬하는 기준을 만들기 위해 자바에서 제공하는 Comparat..
[Java] 백준 #1158 요세푸스 문제
https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 1번부터 N번까지 N명의 사람이 원을 이루며 앉아있음 양의정수 K → 순서대로 K번째 사람 제거 → N명이 제거될 때까지 (N, K) 요세푸스 순열 구하기 💡 알고리즘 자료구조, 큐 💡 접근 처음에 중간에 원소가 나가면 인덱스도 하나씩 줄어들어야 하겠구나 라는 잘못된 생각을 해서 큐를 생각해내지 못했다. (규칙만 추가하며 산으로 가던 코드) int idx = K - 1; LinkedList res = new LinkedList(); while(list.size() > 0){ res.add..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQUk1M%2FbtrDc6velpM%2Fku7Zx02w0Lb32KZgwvPJXk%2Fimg.png)
[Spring/Data JPA] 프로젝트 환경설정
🌝 프로젝트 환경설정 preference → Build and run IntelliJ IDEA로 변경하기 enable annotation option 체크 🌝 h2 데이터베이스 설치 spring.io 들어가서 h2 database와 spring version 일치하는지 확인 chmod 755 h2.bat 권한주고 ./h2.bat /datajpa.mv.db 파일 생성 확인 → jdbc:h2:tcp://localhost//datajpa 이렇게 접속! 🌝 스프링 데이터 JPA와 DB 설정, 동작확인 Member entity, MemberJpaRpository 작성 @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id;..