전체 글
백준 1655 자바 - 가운데를 말해요 문제
www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 우선순위 큐를 이용해서 heap을 만들어서 처리하는 방법 maxheap은 큰 값이 우선 minheap은 작은 값이 우선 입력 값을 maxheap에 1개 추가후 minheap에 추가하면서 두개의 길이를 지속적으로 맞춰줌. maxheap의 최대값이 minheap의 최소값보다 크다면 둘을 swap 한다. maxheap의 최대값이 중간값이 된다. 문제의 예시의경우 swap이 발생하지는 않음 1 입력 [..
백준 1766 자바 - 문제집 문제
www.acmicpc.net/problem/1766 1766번: 문제집 첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주 www.acmicpc.net 그래프이론, 위상정렬, 우선순위 큐 개념이 들어있는 문제로 문제 풀이방식은 다음과 같다. 1. 입력받은 문제들의 index를 graph로 만들고 2. 각 문제들의 선행되어야하는 문제의 수 즉 진입차수(inDegree)를 배열로 셋팅한다. 3. 우선순위 큐를 index값이 작은 것이 우선되도록 만들고 4. 진입차수가 0인 문제들을 해당 큐에 넣는다. 5. 큐를 돌면서 해당 문제의 i..
7. 값 타입
1. 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 private String username; 값 타입 분류 - 기본값 타입 1) 자바 기본 타입(int, double) 2) 래퍼 클래스(Integer, Long) 3) String - 임베디드 타입(embedded type, 복합 값 타입) - 컬렉션 값 타입(collection value type) 2. 기본값 타입 생명주기를 엔티티의 의존 값 타입은 공유하면X 기본 타입은 항상 값을 복사함 Integer같은 래퍼 클래스나 String 같은 특수한 클래스는 공유 가능한 객체이지만 변경X 3..
백준 14003 자바 - 가장 긴 증가하는 부분 수열 5 문제
앞서 풀었던 가장 긴 증가하는 부분 수열 2번에 수열 index를 같이 셋팅한 뒤 계산한다고 보면 된다. 가장 긴 증가하는 부분 수열 2번에 수열에서는 i 0 1 2 3 4 5 arr 1 5 6 2 3 4 listForSize 0 1 2 3 이렇게 까지만 구한뒤 listForSize의 값을 이용해서 길이를 구했다. 여기에 자신 증가하는 수열의 몇번째를 차지하고 있는지에 대한 리스트를 추가한다. 위에 예에 추가하면 아래와 같다. i 0 1 2 3 4 5 arr 1 5 6 2 3 4 listForSize 0 1 2 3 indexs 0 1 2 1 2 3 이부분에서 입력받은 수열 arr(A)를 뒤에서 부터 순회하면서 값을 체크한다. int index = listForSize.size() - 1; Stack st..
백준 12015 자바 - 가장 긴 증가하는 부분 수열 2 문제
www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 가장 긴 부분 수열의 길이를 구하는 문제로 전체 리스트를 한번만 돌아서 임으로 만든 listFroSize 배열을 변경해나면서 사이즈를 구함. 1. listFroSize에 0을 추가 2. 입력받는 arr를 순회 - 1) arr의 인자 값이 listFroSize의 마지막 값보다 큰 경우 추가 - 2) arr의 인자 값이 listFroSize의 마지막 값보다 작은 경우 이진 탐색 - 이진탐색을 통해서 right 값을..
백준 13460 자바 - 구슬 탈출 2 문제
구현은 bfs를 통해서 모든 방향으로 기울여가면서 답을 구하면된다. 첫 위치서 부터 bfs를 통해 상하좌우로 기울여보면서 각각의 위치와 기울인 횟수를 체크 기울여서 구슬을 이동시킬때 서로에 대한 고려를 하지않고 이동시킨 뒤 서로의 위치가 동일한 경우만 더 많이 이동한쪽을 덜이동시키도록 함 이렇게 bfs를 진행하다가 빨간 구슬만 빠져나간 경우 해당 count를 print함. import java.io.*; import java.util.*; class Ball { int x; int y; int count; public Ball(int x,int y, int count) { this.x = x; this.y = y; this.count = count; } } // 구슬 탈출 2 문제 - 13460번 pub..
github 잔디밭 안 심어지는 현상 해결 및 이미 커밋한 내용 반영하기
1. github 잔디 안심어지는 현상 해결 흔히 잔디밭이라고 불리는 github contributions(activity) 나의 저장소 중 어디라도 commit해서 push해서 반영 시키면 잔디가 심어져야하는데 심어지지 않을때가 있다. 특정 저장소나 특정 컴퓨터에서 그럴수도 있고 전체에서 그럴수도 있다. 나는 잔디를 심어서 축구를 해야하는데...^^ 이유는 간단하다 github 계정에 등록된 이메일과 커밋해서 푸시를 날리는 local 환경의 이메일 설정이 다르기 때문이다. 우선 깃허브 이메일을 확인하려면 1. 깃허브 settings로 들어가자. 2. Emails 메뉴로 들어가자. 3. 등록된 이메일을 확인하자. 4. local 환경의 git에 등록된 이메일을 확인하자 작업중인 폴더에서 cmd 또는 gi..
6. 프록시와 연관관계 관리
1. 프록시 실제 클래스를 상속 받아서 만들어짐 실제 클래스와 겉 모양이 같다. 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨(이론상) 프록시 객체는 실제 객체의 참조(target)를 보관 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드 호출 em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); // 이때 member의 team은 프록시 Team team = member.getTeam(); /..