전체 글
[자료구조] 트라이(Trie)
https://programmers.co.kr/learn/courses/30/lessons/60060?language=java 코딩테스트 연습 - 가사 검색 programmers.co.kr Trie 구현 먼저 Node 클래스를 만듭니다. class Node { Map childNodes = new HashMap(); @Override public String toString(){ return childNodes.keySet().toString(); } } Node Class는 필드로 HashMap의 자식 노드를 가집니다. 자식 노드를 확인하기 위해 toString을 오버라이딩 해줍니다. class Trie { Node rootNode = new Node(); void insert(String s) { N..
프로그래머스 스택/큐 : [프린터] JAVA 풀이
https://programmers.co.kr/learn/courses/30/lessons/42587?language=java 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 문제 설명 프린터를 우선순위대로 출력을 할때 내가 원하는 출력물이 몇번째로 출력되는지 구하는 문제입니다. 매개변수로는 우선순위인 int[] pripriorities와 내가 원하는 출력물의 인덱스 location이 주어집니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도..
프로그래머스 3단계/효율성 : [숫자 게임] Java 풀이
https://programmers.co.kr/learn/courses/30/lessons/12987#qna 코딩테스트 연습 - 숫자 게임 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 programmers.co.kr 팀 A의 카드 배열 [ 5, 1, 3, 7 ] 팀 B의 카드 배열 [ 2, 2, 6, 8 ] 여기서 팀 B가 최대로 점수를 많이 가져가는 방법은 1 : 2 승리 3 : 6 승리 7 : 8 승리 5 : 2 패배 3점 일것입니다. 문제 난이도는 쉽지만, 3단계 문제답게 효율성 테스트가 까다로운 문제입니다. 정답 코드 import java.uti..
프로그래머스 스택/큐 : [기능개발] Java 풀이
https://programmers.co.kr/learn/courses/30/lessons/42586?language=java 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 기본 자료구조에 대한 이해가 필요한 문제입니다. import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { Queue queue = new ArrayDeque(); ArrayList list = new ArrayList();..
[Spring Boot] Transactional 어노테이션에 대해 알아보자.
데이터베이스와 트랜잭션 트랜잭션 트랜잭션은 작업을 구성하는 가장 작은 작업이다. 출근하는 과정을 예시로 설명하겠다. 집에서 나와 버스 정류장으로 간다 버스를 타고 신도림역에 내린다. 신도림역에서 2호선을 타고 합정역에서 내린다. 합정역에서 회사까지 걸어간다. 이 네개의 과정은 하나의 트랜잭션으로 묶을 수 있다. 1, 2번 과정이 성공적으로 끝나도 3번에서 지하철이 오지않아 SubwayNotFoundException이 발생한다면 트랜잭션은 실패라고 볼 수 있다. 스프링에서는 예외 발생 시 롤백하는 범위와 과정을 정할 수 있다. 트랜잭션의 성질 (ACID) 원자성 Atomicity 원자성은 모두성공 or 모두실패라고 생각하면 편합니다. 대표적인 예시로 돈을 입금하는 과정에서 돈을 뺴오는 과정은 성공하고 돈을..
프로그래머스 MySQL Level 1 모든 문제 풀이
1. 모든 레코드 조회하기 코딩테스트 연습 - 모든 레코드 조회하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC; 2. 이름이 없는 동물의 아이디 https://programmers.co.kr/learn/courses/30/lessons/59039?language=mysql 코딩테스트 연습 - 이름이 없는 동물의 아이디 ANIMAL_INS 테이블은 ..
[Intellij Database] 인텔리제이 데이터베이스 연동 방법 (MySQL)
인텔리제이 1. 밑 작업 커맨드를 열어줍니다. Ctrl + r 누르시고 'cmd' 입력 user> mysql -u root -p 위 코드를 입력하시고 패스워드도 입력해주세요. 위 처럼 바뀌면 정상입니다. 오류가 나시는 분들은 환경 변수를 설정해주세요. select user(); 을 입력하시면 계정명@IP가 나옵니다. 잊어버리지 않도록 메모 해주세요. SHOW VARIABLES WHERE VARIABLE_NAME = "PORT"; 를 입력해주세요. VALUE부분이 PORT번호입니다. 사용자 명 root 패스워드 **** IP localhost PORT 3306 Intellij 우측 상단의 Database 클릭해서 + 버튼을 눌러주세요. Data Source -> MYSQL을 클릭해주세요. User에 사용자..
[Java Swing] 다양한 Event 처리 방법
Swing과 AWT로 GUI를 구성하기 위한 기본적인 설정. package school.poly.swing.pane.과제.이름_띄우기; import javax.swing.*; import java.awt.*; public class Main extends JFrame { private static final int SCREEN_WIDTH = 500; private static final int SCREEN_HEIGHT = 300; Main(){ setting(); } void setting(){ setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(new Dimension(SCREEN_WIDTH,SCREEN_HEIGHT)); setVisible(true); setVisi..
프로그래머스 팁스다운 : [예상 대진표] Java 문제 풀이 (재귀)
https://programmers.co.kr/learn/courses/30/lessons/12985?language=java 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr 하루에 한 경기 씩 진행되는 토너먼트에 참가한 전체 인원 2^^n명이 참가했습니다. 친구 A와 B의 시드 번호를 매개변수로 받고 A와 B가 몇일이 지나야 만날 수 있는지 day를 리턴해야됩니다. 경기가 끝나고 다음 경기에 내가 몇번 순서인지 알 수 있는 방법이 있습니다. 토너먼트의 특성상 절반은 이기고 절반은 패..
프로그래머스 탐욕법(그리디) : [폰켓몬] Java 문제 풀이 (한 줄)
https://programmers.co.kr/learn/courses/30/lessons/1845?language=java 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr 박사가 가지고 있는 포켓몬을 매개변수로 받아서 몇 종류의 포켓몬을 가져 갈 수 있는지 return하면 되는 문제입니다. 가져갈 수 있는 포켓몬의 수는 [박사가 가진 포켓몬 수 / 2] 이다. 최대한 많은 종류의 포켓몬을 가져가고 싶다. 사실 "탐욕법"이란 알고리즘 자체가 어떤 방법이 가장 좋은지만 안다면 금방 풀 수 있습니다. 저의 풀..
[FOREIGN KEY] 외래키 제약조건
FOREIGN KEY 제약 조건을 설정한 필드는 외래 키 라고 부르며, 한 테이블을 다른 테이블과 연결 시켜주는 역할을 합니다. 외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력됩니다. 즉, FOREIGN KEY 제약 조건은 하나의 테이블을 다른 테이블에 의존하도록 만듭니다. FOREIGN KEY 제약 조건을 설정할 때 참조되는 테이블은 반드시 UNIQUE나 PK 제약 조건이 설정되어 있어야 합니다. 1. CREATE 문으로 FOREIGN KEY 제약 조건을 설정하는 방법입니다. CREATE TABLE {TABLE_NAME}( {FIELD_NAME} {TYPE}, CONSTRAINT {제약 조건 이름} FOREIGN KEY (FIELD_NAME) REFER..
[MySQL로 기본적인 DDL SQL구문을 배워보자] - (3) ALTER로 데이터베이스와 테이블을 수정해보자
데이터베이스 수정 문법 1. ALTER DATABASE [DB NAME] CHARACTER SET=문자집합이름 2. ALTER DATABASE [DB NAME] COLLATE=콜레이션이름 테이블 수정 문법 테이블 수정문은 세가지 종류가 있습니다. ADD (필드를 추가) DROP (필드를 삭제) MODIFY COLUMN (필드를 수정) 1. ADD ALTER TABLE [TABLE NAME] ADD [FieldName] [FieldType] PERSON_TABLE에 INT타입의 PERSON_HEIGHT을 추가해보자. ALTER TABLE PERSON_TABLE ADD PERSON_HEIGHT INT; 2. DROP ALTER TABLE [TABLE NAME] DROP [FIELD NAME] FIELD NA..
[Spring Data Jpa] (JUNIT, DDL) 외래키 제약조건에 NOT NULL을 추가해보자.
책 DB ( Book Entity ) package com.example.jpa.domain; @Entity @NoArgsConstructor @Data @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) public class Book extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String category; private Long authorId; private Long publisherId; } PK로 id를 들고있고 문자열 타입으로 name, category, ..
프로그래머스 카카오 : [크레인 인형뽑기 게임] Java 문제 풀이
https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 인형이 있는 위치 int[][] board 집게가 움직인 경로 int[] moves moves의 원소들로 인형을 뽑아서 오른쪽 공간에 차곡차곡 쌓을때 연속된 인형들을 연쇄적으로 없앴을떄, 모든 moves가 끝나고 몇개의 인형들이 없어졌는지 return하는 메소드를 구현하는 문제입니다. 매개변수 int[][] board = {{0, 0, 0, 0, 0}, {0, 0, 1, 0, 3}, {0..
[MySQL로 기본적인 DDL SQL구문을 배워보자] - (2) INSERT 문을 사용해서 데이터를 테이블에 저장하기
PERSON 테이블 CREATE TABLE PERSON_TABLE( PERSON_ID INT AUTO_INCREMENT PRIMARY KEY , PERSON_NAME VARCHAR(4) NOT NULL, PERSON_AGE INT ); MYSQL에서 데이터를 삽입 할때는 INSERT INTO를 사용합니다. INSERT INTO {테이블 이름} VALUES (? , ? , ?) INSERT INTO PERSON_TABLE VALUES(NULL,"태우" , 19); 주의할 점 PERSON_NAME의 데이터 타입은 VARCHAR(N) 입니다. 이름이 N글자 이상되면 에러가 뜨니 주의하세요. 사실 제 얘깁니다..... Error Code: 1406. Data too long for column 'PERSON_N..
[MySQL로 기본적인 DDL SQL구문을 배워보자] - (1) 스키마, 테이블 만들기
데이터베이스 (스키마) 생성 CREATE DATABASE TESTDB; CREATE SCHEMA TESTDB; 데이터베이스 (스키마) 삭제 DROP DATABASE TESTDB; DROP SCHEMA TESTDB; 데이터베이스 조회 및 선택 SHOW DATABASES; USE TESTDB; 테이블 생성 CREATE TABLE PERSON ( {필드 이름} {도메인(데이터 타입)} {제약조건} , {필드 이름} {도메인(데이터 타입)} {제약조건} PERSON_ID INT PRIMARY KEY AUTO_INCREMENT, PERSON_NAME VARCHAR(4) NOT NULL ) PERSON_ID와 PERSON_NAME은 필드 이름입니다. INT, VARCHAR(4)는 도메인입니다. PRIMARY KEY..
프로그래머스 2017:팁스다운 [짝지어 제거하기] Java 문제 풀이
https://programmers.co.kr/learn/courses/30/lessons/12973?language=java 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr import java.util.Stack; class Solution { public int solution(String s) { Stack stack = new Stack(); for(char c : s.toCharArray()){ if( ! stack.isEmpty() && stack.peek() == c ) stack...
프로그래머스 카카오 : [오픈채팅방] Java 문제 풀이
프로그래머스 오픈채팅방: https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr public class Main { public static void main(String[] args) { Map map = new HashMap(); int cnt = 0; String[] record = { "Enter uid1234 Muzi", "Enter uid4567 Prodo", "Leave uid1234", "Enter u..
Java Collections를 쉽고 빠르게 정렬하기
Collections 중 List ( ArrayList )를 예시로 들었습니다. Book Class. @NoArgsConstructor @AllArgsConstructor @Getter @Setter @ToString public class Book { private String name; private String author; private int price; } 필드로 문자열 타입의 name과 author, 정수 타입의 price를 가지고 있는 Book Class로 예시를 들겠습니다. Main Class public class Main { public static void main(String[] args) { List bookList = new ArrayList(); bookList.add(new..
spring boot failed to start bean 'documentationpluginsbootstrapper'; 에러
Maven Repository에서 Springfox - swagger를 사용하려다가 오류가 발생 사유는 spring 2.6.x --ver + swagger 3.x.x 에서 발생됨. 해결 방법 application.yaml (yml) spring: mvc: pathmatch: matching-strategy: ant_path_matcher application.properties spring.mvc.pathmatch.matching-strategy=ant_path_matcher 추가