기록

Java-Spring/이펙티브 자바

[이펙티브 자바] 모든 객체의 공통 메서드

✔️ 모든 객체의 공통 메서드Object는 객체를 만들 수 있는 구체 클래스지만 기본적으로 상속해서 사용하도록 설계되었다.Object에서 final이 아닌 메서드(equals, hashCode, toString, clone, finalize)는 모두 재정의를 염두에 두고 설걔된 것이라 재정의 시 지켜야 하는 일반 규약이 명확히 정의되어 있다.그래서 Object를 상속하는 클래스, 즉 모든 클래스는 이 메서드들을 일반 규약에 맞게 재정의해야 하므로 이를 다뤄보자.10. equals는 일반 규약을 지켜 재정의하라equals 메서드는 재정의하기 쉬워 보이지만 자칫하면 끔찍한 결과를 초래한다.그냥 둘 경우 그 클래스의 인스턴스는 오직 자기 자신과만 같게 된다.그러니 다음에서 열거한 상황 중 하나에 해당한다면 재..

Coding Test/Java 알고리즘 실전

[21315] 카드 섞기

✔ 카드 섞기[백준 212315]코드 구현하기/* * 문제 분석하기 * : 초기 상태부터 시작해 K가 될 수 있는 수를 두 개 뽑아 완전 탐색하여 알맞는 K를 찾도록 함 * 예) 초기 상태 -> 1 2 3 4 5 * 4개의 카드를 더미의 맨 위에 올림 -> 2 3 4 5 1 * 2 4, 5, 2, 3, 1 * i = 3일 때, 직전에 맨 위에 올린 카드(4, 5) 중에서 밑에서 1개의 카드 더미를 맨 위에 올림 -> 5, 4, 2, 3, 1 *//* * 손으로 풀어보기 * 1. K가 될 두 수를 뽑도록 함 * 2. K에 따라 2번의 (2, K) 섞기를 하여 결과를 찾도록 함 * 2^K개의 카드를 더미의 맨 위에 올린 후, 그 중에서 2^(K - i + 1)개의 카드를 더미의 ..

Coding Test/Java 알고리즘 실전

[16235] 나무 재테크

✔ 나무 재테크[백준 16235]코드 구현하기/* * 문제 분석하기 * : K번 동안 사계절의 나무 재테크를 하도록 한 후 살아있는 나무의 개수를 구하도록 함 * *//* * 손으로 풀어보기 * 1. 각 칸에 추가되는 양분의 양을 저장 * 2. 처음 칸의 양분을 5로 시작하도록 저장 * 3. 상도가 심은 나무의 정보를 저장 * 4. 나무가 자신의 나이만큼 양분을 먹고, 나이를 1 증가시키도록 함 * 이때 하나의 칸에 여러 개의 나무가 있다면, 나이가 어린 나무부터 양분을 먹고 * 양분이 부족해 자신의 나이만큼 먹을 수 없다면 이 나무를 죽인 후, 나이를 2로 나눈 값을 양분으로 만들도록 함 * 5. 존재하는 나무의 나이가 5의 배수라면 인접한 8개의 칸에 나이가 1인 나무를 생성 * 6..

Coding Test/Java 알고리즘 실전

[18430] 무기 공학

✔ 무기 공학[백준 18430]코드 구현하기/* * 문제 분석하기 * : 나무의 재료에 따라 부메랑을 만들 수 있는 조합을 모두 찾은 후, 부메랑들의 강도의 합의 최댓값을 찾도록 함 * *//* * 손으로 풀어보기 * 1. 부메랑의 중심이 될 좌표를 하나 선정하여 하나의 부메랑을 만들어 부메랑의 강도의 합을 구함 * 2. 만들어진 부메랑을 기준으로 만들 수 있는 부메랑 조합(┑, ┙, ┕, ┍, 만들지 않음)을 계속해서 만들어나가 부메랑들의 강도의 합에 더해주도록 함 * 3. 이를 반복하여 만들어질 수 있는 부메랑들의 조합에 따른 부메랑들의 강도의 합의 최댓값을 찾아 출력 *//* * 18430) 무기_공학 */public class Main { static BufferedReader br..

Coding Test/SQL 알고리즘 개념

[목차] 프로그래머스 SQL 고득점 Kit

순번유형01SELECT02SUM, MAX, MIN03GROUP BY04IS NULL05JOIN06String, Date

Coding Test/SQL 알고리즘 실전

[MYSQL] 프로그래머스 GROUP BY

✔ GROUP BY자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기[프로그래머스 151137]GROUP BY : 데이터를 그룹화/* SELECT : 자동차 종류와 그에 따른 자동차 대수 FROM : CAR_RENTAL_COMPANY_CAR 테이블 WHERE : 통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차 GROUP BY : 자동차 종류 ORDER BY : 자동차 종류를 기준으로 오름차순 정렬*/SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARSFROM CAR_RENTAL_COMPANY_CARWHERE OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%'GROUP BY CAR..

Coding Test/SQL 알고리즘 실전

[MYSQL] 프로그래머스 String, Date

✔ String, Date조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기[프로그래머스 164671]CONCAT : 둘 이상의 문자열 값을 입력한 순서대로 합쳐서 반환/* SELECT : 첨부파일 경로(/home/grep/src/게시글 ID/파일 ID+파일 이름+파일 확장자) FROM : USED_GOODS_BOARD, USED_GOODS_FILE 테이블 WHERE : 조회수가 가장 높은 중고거래 게시물 ORDER BY : FILE ID를 기준으로 내림차순 정렬*/SELECT CONCAT('/home/grep/src/', A.BOARD_ID, '/', B.FILE_ID, B.FILE_NAME, B.FILE_EXT) AS FILE_PATHFROM USED_GOODS_BOARD A JOIN USED_G..

Coding Test/SQL 알고리즘 실전

[MYSQL] 프로그래머스 JOIN

✔ JOIN주문량이 많은 아이스크림들 조회하기[프로그래머스 133027]/* SELECT : 상위 3개의 맛 FROM : FIRST_HALF, JULY 테이블 GROUP BY : 아이스크림 맛 ORDER BY : 7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값을 내림차순 정렬*/SELECT A.FLAVORFROM FIRST_HALF A JOIN JULY BON A.FLAVOR = B.FLAVORGROUP BY A.FLAVORORDER BY (SUM(A.TOTAL_ORDER) + SUM(B.TOTAL_ORDER)) DESCLIMIT 35월 식품들의 총매출 조회하기[프로그래머스 131117]/* SELECT : 식품 ID, 식품 이름, 총매출(식품 가격 * 주문량) FROM : FOO..