1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/133502 2. 풀이 자료구조를 조금 안다면, Stack문제라는걸 바로 파악할 수 있다. 4개를 pop 했을 때, 후입선출 자료구조기 때문에 역순 빵 - 고기 - 야채 - 빵인지 판별 해서, 햄버거가 완성되면 빼고 완성되지 않으면 역순으로 삽입하면된다. 배열 값이 1인 빵의 개수를 센다. 스택에 삽입 빵의 개수가 짝수가 됐을 때부터 4개씩 pop하면서 햄버거인가 판별한다. 햄버거로 판별되면, 정답+1 / 빵개수 -2 햄버거가 아니면 역순으로 삽입 개인적으로 코드는 숏 코딩이고 뭐고 직관적인게 최고라고 생각한다. 내가 짠 코드가 최고란 뜻은 당연히 아니다.. 3. 코드 import java...

최근 CI/CD와 인프라적인 부분에 집중하고 있어서, 개발과 DB에 관련된 내용을 볼 겨를이 없었다. 특히 DB 부분이 부족한 것 같아, 계속해서 작성하려고 한다. 물론 DB 관련 내용은 엄청나게 방대하지만 JPA를 가장 써보고 싶어서, 첫 목적지는 JPA와 querydsl이 될 것 같다. 이 내용들을 써가는 과정에서 인프라적인 부분도 있을 것이기 때문에, 그 부분도 보완해 나가면서 쓰면 좋을 것 같다.(DB는 oracle로 시작하겠지만 웬만하면 redis까지 써볼 것이고, dbcp에 관한 내용도 정리하면 좋을 것 같다) 우선, JPA를 바로 들어가기에 앞서 일단 현재 회사에서 쓰고 있는 SQL Mapper인 MyBatis부터 정리해보고자 한다. (jdbc부터 이야기하기엔 너무 재미가 없다..) ORM인..

DB에 설정을들여다보다가 뜬금없지만, 정규화(Normalization)에 대해 정리를 하고 넘어가는게 좋겠다 생각이 들었다. 정규화의 목적은 DB CRUD 중 이상현상(Abnomaly) 발생과 컬럼 간 종속성을 피하기 위함이다. 삭제 이상: 데이터를 삭제하면, 의도하지 않은 다른 정보까지 삭제되어버리는 현상 삽입 이상: 데이터를 삽입할때, 특정 컬럼에 해당하는 값이 없어 NULL을 입력해야 하는 현상 갱신 이상: 데이터를 갱신할때, 중복된 데이터 중 일부만 수정되어 데이터 불일치 현상 이러한 이상 현상들을 피하기 위해 정규화를 거친다. 정규화를 통해 데이터 중복을 피하고, 무결성을 유지하는게 목표이다. 코딩애플 유튜브를 보면서 정리했다. 1. 제 1 정규화 제 1 정규화는 테이블의 컬럼이 원자값(Atom..

1. Array 에서 ArrayList 변환 1.1. Stream 이용 String[] arr = new String [] {"1", "A", "a", "b"}; List list = Arrays.stream(arr).collect(Collectors.toList()); System.out.println(list.getClass().getName()); 결과화면 : 1.2. Lists 클래스 이용 String[] arr = new String [] {"1", "A", "a", "b"}; List list = Arrays.asList(arr); list.forEach(System.out::println); 결과화면 : 2. ArrayList 에서 Array 변환 2.1. toArray() 이용 String..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/138477 2. 풀이 어쩌다 보니 계속 우선순위 큐 문제를 풀게 됐다. peek()을 알면 쉽게 풀 수 있다. peek()은 우선순위 큐의 값을 pop 하지 않고, 맨 앞 값을 가져올 수 있다. 오름차순으로 자동 정렬되는 우선순위 큐에서는, 맨 앞 값이 최하위 점수가 된다. 정리하면 아래와 같은 순서로 구현했다. 우선순위 큐와 정답을 ArrayList로 저장할 answerList 정의 우선순위 큐에 k개가 다 차기 전에는 우선순위 큐에 무조건 삽입 peek() 함수를 통해 우선순위 큐의 맨 앞의 값을 가져와 answerList에 삽입 k개가 다 차면, score와 우선순위 큐의 맨 앞의 값..

DB를 조회할 때, 조회를 할때마다 테이블 전체를 조회하는 건 너무 비효율적이다. 수십, 수백 단위의 데이터에서는 별 문제가 안될 수 있지만, 수백, 수천만 이상의 데이터가 쌓여있을 때는 큰 문제가 된다. 이럴 때 INDEX를 사용한다. 1. INDEX 란? 데이터베이스에서 인덱스(INDEX)는 쓰기 속도가 느리고 저장 공간이 늘어나는 대신 검색 작업의 속도를 향상시키는 데이터 구조이다. 인덱스의 가장 큰 특징은 데이터들이 정렬이 되어있다는 점이다. 이 특징으로 인해 인덱스를 사용하면 DBMS(데이터베이스 관리 시스템)가 조건 검색을 할 때, 테이블에서 특정 데이터 행을 매우 빠르게 찾고 검색할 수 있다. WHERE 절 테이블의 레코드는 순서 없이 저장되기 때문에 특정 조건에 맞는 데이터를 찾아낼 때도 ..

내가 운영/개발 하는 서비스에선 사용자나, 구분이 필요한 무언가를 위해 13자리의 난수를 생성해 아이디를 부여한다. 난수 생성기를 올바르게 사용하지 못 한다면, 동일한 아이디가 생성되고, 그 아이디로 특정 데이터를 insert했을 때 DB에선 PK 에러가 발생한다. 빼도 박도 못하는 서버 에러다. 최근 로스트아크에서 카드 확률에 대한 논쟁이 있었었다. 영웅 카드 팩 230개를 개봉했다. 첫 개봉에서 사이카 카드 5장, 피요르긴 카드 5장이 등장했다. 190개를 개봉했지만 똑같이 사이카, 피요르긴 카드 5장씩만 나타났다. 스마일게이트의 설명에 따르면 해당 사례는 시스템 구조상 14억분의 1 확률로 발생할 수 있는 버그 현상이라고 설명했다. 출처 : 게임톡(https://www.gametoc.co.kr) 이..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/134240 2. 풀이 팰린드롬을 만드는 문제 칼로리 높은 것을 먼저먹기 때문에, 마지막 행렬의 index부터 처리하도록 한다. 매우 난이도가 낮은 문제다. 3. 코드 class Solution { public String solution(int[] food) { String answer = "0"; for(int i=food.length-1; i>=1;i--){ if(food[i] / 2 > 0) { String eatable = String.valueOf(i); for(int j =0; j
- Total
- Today
- Yesterday
- AWS
- AWS EC2
- EKS
- CORS
- OpenAI
- Redis
- 스프링부트
- CloudFront
- elasticsearch
- lambda
- docker
- 후쿠오카
- Log
- S3
- springboot
- Kotlin
- Spring
- JWT
- AOP
- 티스토리챌린지
- serverless
- 오블완
- ChatGPT
- java
- terraform
- cache
- 람다
- GIT
- 인프런
- ecs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |