일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- ansi sql 단점
- Java
- 프로그래머스 이중우선순위큐 자바
- 개발자 면접 준비
- Spring Boot
- oracle ansi sql
- ansi sql 장점
- SQL
- 면접 필수 질문
- DFS
- CJ DBASE&
- JPA
- 프로그래머스 이중우선순위큐
- 이분탐색
- 이중우선순위큐 java
- 백준
- BFS
- 백트래킹
- 이중우선순위큐 자바
- 프로그래머스
- DP
- IT 면접 준비
- 위상정렬
- 프로그래머스 이중우선순위큐 java
- oracle ansi
- 디베이스앤 인턴 후기
- 그리디
- DBASE&
- Gradle
- 디베이스앤
- Today
- Total
목록전체 글 (115)
쉬운 프로그래밍
www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제설명 K개의 랜선이 주어졌을 때, 각각의 랜선을 똑같은 길이로 잘라서 N개의 랜선을 만들어야한다. 이 때 랜선의 길이의 최대값을 출력하면 된다. 해결방법 랜선의 길이가 정수 최대값이기에 완탐으로 돌리면 안봐도 터질게 뻔하다. 그러므로 이분탐색을 통해 문제를 해결하였다. 이분탐색 내에서 left값은 케이블 길이의 최소값인 1이 될 것이고, right는 가장 긴 케이블을 고르면 된다..
www.acmicpc.net/problem/2636 2636번: 치즈 첫째 줄에는 사각형 모양 판의 세로와 가로의 길이가 양의 정수로 주어진다. 세로와 가로의 길이는 최대 100이다. 판의 각 가로줄의 모양이 윗 줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진 www.acmicpc.net 문제설명 치즈의 모서리(입력 배열에서 0과 맞닿아 있는 부분중에서 바깥부분)이 시간마다 녹는다. 이 때 치즈가 다 녹는 시간과 다 녹기 직전 시간의 치즈의 개수를 구하는 문제이다. 해결방법 처음에는 1인 부분부터 BFS를 돌려서 0과 맞닿아있으면 모서리라고 생각해 그것을 녹여간다는 방향으로 생각했다. 근데 이렇게 하면 치즈 내부에 형성된 모서리를 찾을 수 없다. 그렇기 때문에 무조건 치즈가 존재하지 않는 (0,0)부터 ..
www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 문제 설명 상하좌우로 인접해 있는 땅과의 인구수 차이가 L이상 R이하면 국경선이 열린다. 인접한 땅만을 통해서 형성된 그룹을 연합이라 한다. (BFS 또는 DFS를 통해서 탐색이 되는 범위) 연합 내의 모든 나라는 동일한 인구수를 가지도록 사람들을 이주시킨다. (소수점 제외) 인구 이동을 더 이상 할 수 없을 때까지 사람들을 이주 시켜야 할 때, 총 몇번의 인구 이동이 이루어질지를 구하는 문제이다..
www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 입력으로 주어진 숫자야구에 대한 스트라이크 / 볼 값을 모두 만족하는 경우의 수를 찾는 문제이다. 중복된 숫자 ex) 122 와 0이 들어갈 수 없는 제한이 있다. 그러므로 123 ~ 987에 대해서 중복되는 경우와 0인 경우를 걸러 모두 반복문을 돌려주면 된다. 알고리즘적인 어려움은 없고 구현력이 필요한 문제같다. 브루트포스 유형을 많이 풀어보면서 구현력을 늘려야 할 것 같다. import java.io.Bu..
www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 쉬운거라,,, 풀이는 따로 생략해도 될 것 같다. 백트래킹 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; class Main { static int n; static int m; static in..
아래는 서비스 코드이다. 1. 더티체킹 위의 메소드는 update 기능을 수행하고 있지만 DB에 쿼리를 날리는 부분이 존재하지 않는다. 이것이 가능한 이유는 JPA의 영속성 컨텍스트 때문이다. 영속성 컨텍스트는 엔티티를 영구 저장하는 환경으로 생각하면 된다. JPA는 엔티티가 영속성 컨텍스트에 포함되어있는지, 아닌지를 중시한다. 엔티티 매니저가 활성화된 상태로 트랜잭션 안에서 DB를 통해 데이터를 가져오면 이 데이터는 영속성 컨텍스트가 유지된 상태이다. 즉 이 상태에서 해당 데이터의 값을 변경하면 트랜잭션이 끝나는 시점에 해당 테이블에 변경사항을 반영한다. 요약해서 말하면 Entity 객체의 값만 변경하면 별도로 Update 쿼리를 날릴 필요가 없다는 것이다. 이 개념을 더티 체킹(Dirty Checki..
www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 벽을 무조건 3개 세웠을 때 가장 최소의 칸만큼 바이러스가 퍼지는 경우를 구하는 문제이다. 입력범위가 매우 작다(80) ,,,// 제발 문제풀기전에 입력 범위 숙지하는 습관좀... 입력범위가 작기 때문에 3개의 벽을 세우는 모든 경우에 대하여 구해도 시간초과가 나지 않는다. 그러므로 백트래킹을 통해 모든 경우에 대해 3개의 벽을 세우고, depth가 꽉 차면 바이러스를 퍼뜨린다(bfs) 즉 이 문제는 dfs + bfs 모두..
www.acmicpc.net/problem/16918 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net 알고리즘보다는 구현 과정에서 애를 먹었던 문제였다. 풀이에 가장 기초가 되는 생각은 홀수 시간에는 폭탄을 세팅하고, 짝수 시간에는 폭탄을 터뜨려야 한다는 것이다. 폭탄이 세팅되었다면, 세팅된 시각에 맞게 터뜨려지거나 옆칸의 폭발에 휘말려서 없어지는 로직을 짜야하는데 나는 폭탄입력시간만 가지고 노는 2차원 배열을 만들어서 했다. 정답 소스코드 import java.io.BufferedReader; import java.io.IOE..