https://www.acmicpc.net/problem/20055 🐾 알고리즘belt 배열 : 문제에 나와있는 벨트를 일렬로 생각하여 일차원 배열 형태로 만들었다. (처음에는 문제 그림대로 이차원 배열을 만들었는데, 문제를 더 꼬아서 생각하게 되어 비추..) robot 배열 : N번째에서 로봇을 내려주니 로봇이 이동할 수 있는 길이는 N 만큼이다. 매 스텝마다, N번째 칸에서 robot[N-1]=false로 만들어줘야한다. == 로봇 내려주는 과정1 step : 벨트를 한칸씩 이동시킨다.2 step : 로봇도 벨트가 이동하는 방향으로 이동시킨다. (다음칸의 내구성이 1이상이어야 함.)3 step : 1번째 칸에 로봇을 올려준다. (이 또한 1번째 칸의 내구성이 1이상 이어야함.)4 step : 한 ..
분류 전체보기

프로젝트하다보니 import java.util.*;과 같은 임포트 문이 메모리를 많이 차지한다는 사실을 알게되었다. 어쩌면 그냥 넘어갈 수도 있었는데, 섬세한 코드리뷰를 받으면서 자동 임포트도 설정해서 메모리를 절약할 수 있다는 것을 깨달았다. 인텔리제이에서 와일드카드 임포트를 방지하기 위해 다음과 같은 설정을 거치면 된다. 설정 - Editor - Kotlin(설정 언어) - Imports - Use single name import 로 둘다 설정! - 끝

오늘은 코드리뷰를 받다가 조회용 서비스단에 @Transactional(readOnly = true)를 붙일 때 성능이 향상된다 하여 공부를 해보려고 한다. 엔티티를 조회할 때 영속성 컨텍스트(Persistence Context)는 초기 상태에 대한 스냅샷을 저장하여 트랜잭션 commit 될 때마다 스냅샷과 엔티티의 상태를 비교하여 update query를 생성하여 쓰기 지연 저장소에 저장한다 = dirty checking = 변경 감지더티란, 상태의 변화가 생긴 정도..를 의미! 1. readOnly = true로 설정하면 플러시 모드가 MANUAL로 설정되고, 트랜잭션 내에서 flush()를 호출하지 않는 한 수정내역이 DB에 자동저장되지 않는다. 자동 flush가 방지되기 때문에 조회용으로 가져온 ..

이번 프로젝트에서 CQRS 패턴을 적용하여 서버단 코드를 구현하고 있다. 낯선 개념이지만 이해하니까 어렵게 다가오지 않았다. 1. CQRS란? : Command and Query Responsibility Segregation 의 약어로 Command와 Query의 책임을 분리하는 디자인 패턴이다. Command는 CRUD 중 Create, Update, Delete와 같은 쓰기Query는 CRUD 중 Read와 같은 데이터 조회 기능 2. Query Service Layer데이터값 조회만을 위해 사용하는 서비스단더티체킹이 필요없기 때문에 readOnly transaction을 사용한다플러시를 하지 않기 때문에 더티 체킹과 같은 작업을 수행하지 않아도 되어 성능이 비교적 향상된다. 3. Comman..

코틀린 프로젝트 하던 중 entity 설계 시, MutableSet이 문득 궁금해졌다. 내가 가지고 있는 해시태그들의 리스트들이다. (해시태그 묶음)@ElementCollectionvar hashtags: MutableSet = mutableSetOf() Set : 집합처럼 중복되지 않는, 고유한 원소만을 갖는다. 불변적이다. MutableSet: 말 그대로 가변적인 집합 (Set을 상속받는다). 즉, 가변적으로 요소를 변경할 수 있다. - mutableSetOf는 MutableSet을 선언할 때 사용하는 메서드다. 오늘도 코딩하다가 하나 알았으니 기쁘게 출근~

이번 프로젝트에서 OAuth 2.0 프로토콜을 활용해 소셜 로그인 기능을 구현하려고 한다. 먼저 OAuth2란? OAuth의 정의는 제 3자 애플리케이션이 사용자를 대신하여 HTTP 서비스를 이용할 수 있는 권한을 부여하는 메커니즘을 제공해주는 프로토콜이다. 예를 들어, 애플리케이션에 접근하려고 할 때 네이버 로그인, 카카오 로그인과 같이 다른 SNS를 활용해 해당 애플리케이션으로 접근할 수 있다. 이 때 신뢰할 수 있는 애플리케이션과 통신하여 네이버, 카카오 등이 해당 사용자의 인증을 처리해주는 방식이 OAuth 이다. 그러면 OAuth 관련 용어를 알아보자 1. Resource Server- OAuth2.0 서비스를 제공하고 리소스를 관리하는 서버 (카카오, 네이버 등) 2. Resource Owne..
https://school.programmers.co.kr/learn/courses/30/lessons/131118 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요. 풀이-- 코드를 입력하세요SELECT b.REST_ID, a.REST_NAME, a..
https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1) 세로의 길이가 최소 3 이상이어야 한다.2) 넓이가 세로 길이로 나누어 떨어지지 않으면 h를 계속 증가시키면서 test 한다.3) 면적을 세로길이로 나누면 가로길이도 나온다.4) 이때, (세로-2) * (가로-2) 했을 때 노란색 넓이와 같아야 한다. import java.util.*;import java.io.*;class Solution { public int[] solution(..
https://school.programmers.co.kr/learn/courses/30/lessons/164673 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 두 테이블을 조인 기준을 통해 조인을 시켜 date_format 주의하여 select 해준다출력해야 되는 속성이 두 테이블에 걸쳐있으므로 조인시켜서 출력해야 한다-- 코드를 입력하세요SELECT title, a.board_id, reply_id, b.writer_id, b.contents, date_format(b.created_Date, '%Y-%m-%d') as created_datefrom u..
https://school.programmers.co.kr/learn/courses/30/lessons/131120 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 코드-- 코드를 입력하세요SELECT member_id, member_name, gender, date_format(date_of_birth, '%Y-%m-%d') as date_of_birthfrom member_profilewhere date_of_birth like '%03%' and tlno is not null and gender = 'W'order by member_id asc 주의w..