전체 글 83

[Unix] Unix 기본 명령어

pwd 현재 내가 어느 디렉토리에 있는지를 출력한다. cd 명령 cd .. 바로 위 부모 디렉토리로 이동한다. cd test1 test1 이름의 렉토리로 이동한다. cd ../test1 부모 디렉토리 아래의 test1 이름의 디렉토리로 이동한다. 부모 디렉토리 아래에 test1 이름의 디렉토리가 있어야 한다. cd ../test1/test2 부모 디렉토리 아래의 test1 이름의 디렉토리 아래의 test2 디렉토리로 이동한다. cd /test1 루트 디렉토리 아래의 test1 디렉토리로 이동한다. cd ~ 홈 디렉토리로 이동한다. cd ~/test1 홈 디렉토리 아래 test1 디렉토리로 이동한다. 디렉토리 명령 mkdir test1 현재 디렉토리 아래에 test1 이름의 디렉토리를 만든다. rmdir ..

Unix 2020.11.14

[알고리즘] 프로그래머스 완주하지 못한 선수 자바 JAVA 해시

처음에 반복문 두개 겹쳐서 하다가 효율성에서 떨어졌다. 리스트로 해보려다가 어차피 효율성에서 떨어지다가 두 배열을 정렬하고 다른거 찾으면 answer에 넣게 만들었다. public static String solution(String[] participant, String[] completion) { String answer = ""; Arrays.sort(participant); Arrays.sort(completion); for (int i = 0; i < completion.length; i++) { if (!participant[i].equals(completion[i])) { answer = participant[i]; break; } } if (answer.equals("")) answer =..

알고리즘 2020.11.03

[알고리즘] 프로그래머스 크레인 인형뽑기 게임 자바 JAVA 스택

일단 인형을 건져올려서 바구니에 담는 것은 쉽다. moves의 순서대로 board라는 2차원 배열에 해당 열에만 차례대로 0이 아닌걸 찾아내면 된다. 만약 0이면 바구니에 안담고 넘어가면 끝. 다만 바구니를 Array로 할 것인지, ArrayList로 할 것인지, Stack으로 할 것인지는 기호(?)에 따라 하면 되지만 Stack이 제일 알맞은 것 같다. 리스트로 구현한 코드 : public static int solution(int[][] board, int[] moves) { int answer = 0; List basket = new ArrayList(); for (int i = 0; i < moves.length; i++) { int tmp = 0; int location = moves[i] - ..

알고리즘 2020.11.03

[알고리즘] 백준 1931 자바 JAVA 그리디 알고리즘 회의실배정

이 목표는 가장 많은 강의 수를 구하는 문제인데, 곰곰히 생각해보면 제일 먼저 따져야할 것은 끝나는 시간이 가장 빠른 것을 기준으로 정하면 되는 문제이다. 다만 중요한 점은 정말 당연한 이야기이지만 다음 강의의 시작시간이 현재 강의의 끝 시간보다 커야한다는 점이다. 왜? 강의는 겹칠 수가 없으니까. 문제에는 정렬되어서 나온다는 말이 없기 때문에 정렬을 해야한다. 기준은 끝나는 시간을 기준으로 정렬을 하되, 만약 끝나는 시간이 같다면 시작시간이 빠른 순으로 정렬을 하면 된다. 이에 대한 정렬 코드는 아래의 코드이다. Arrays.sort(arr, new Comparator() { @Override public int compare(int[] start, int[] end) { if (start[1] == ..

알고리즘 2020.11.02

[알고리즘] 백준 12865 자바 JAVA 동적프로그래밍 냅색

처음에 풀 때는 1차원 배열에 인덱스를 무게, 값을 가치로 두고 풀었는데 원하는 방향으로 값이 나오지 않았다. 왜 안나오나 했더니 이전값과 비교하는 방식이 틀려먹어서였다. public class BaekJoon_16_12865_2 { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(reader.r..

알고리즘 2020.10.31

[JPA] JPQL 기본

서론 JPA에서는 여러가지 쿼리방법을 지원하는데 그 중 대표적으로 JPQL과 JPA Criteria가 있다. JPQL의 경우에는 엔티티 객체를 대상으로 쿼리를 작성하고 SQL 문법과 매우 유사하다. List result = em.createQuery("select m From Member m where m.name like ‘%hello%'", Member.class) .getResultList(); 하지만 String 형태로 작성되기 때문에 동적인 쿼리는 작성하기 어렵다. 이를 위해서 JPA 표준스펙으로 JPA Criteria가 존재한다. 하지만 JPA Criteria 같은 경우, 코드를 자바 코드로 작성할 수 있다는 장점이 존재한다. CriteriaBuilder cb = em.getCriteriaBu..

JPA 2020.10.27

[JPA] 값 타입 Collections

데이터베이스에는 자바의 컬렉션을 저장할 수 있는 메커니즘이 아니다. 자바의 컬렉션 데이터를 저장하려면 별도의 테이블에 하나하나 저장해야한다. 사용 방법 예시 코드 Address 임베디드 값 타입 : @Embeddable public class Address { private String city; private String street; private String zipcode; public Address() { } public Address(String city, String street, String zipcode) { this.city = city; this.street = street; this.zipcode = zipcode; } public String getCity() { return cit..

JPA 2020.10.24

[JPA] 임베디드 타입

자바에는 기본값 타입이라는 것이 존재하는데, 먼저 int, double 같은 것과, Integer Long 과 같은 Wrapper 클래스, String 같은 것이 존재한다. String name; int age; 와 같은 것이 그 예이다. 참고로 int, double같은 기본 타입은 절대 공유할 수 없다. C언어야 메모리 접근이 가능하기 때문에 가능하지만, 자바는 그렇지 않다. int a = 10; int b = a; b = 20; b = a 과정에서는 값이 복사되는 것이지 공유되는 것이 아니다. 또한 Wrapper 클래스나 String 같은 특수한 클래스는 공유 가능한 객체긴 하지만 변경할 수가 없다. 이 녀석들은 기본 값 타입이기 때문에 생명주기 자체는 엔티티가 제거 되면 당연히 같이 제거가 된다. ..

JPA 2020.10.23

[JPA] orphanRemoval

부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제해주는 기능이다. @Entity public class Parent { @Id @GeneratedValue private Long id; private String username; @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true) private List childList = new ArrayList(); } orphanRemoval을 true로 하면 , Parent parent1 = em.find(Parent.class, parent.getId()); parent1.getChildList().remove(0); // delete 쿼리나간다. 자동으로 ..

JPA 2020.10.22