목록Programming (60)
조앤의 기술블로그
1. 없어진 기록 찾기 천재지변으로 인해 일부 데이터가 유실되었다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID순으로 조회하는 SQL문 작성 SELECT A.ANIMAL_ID, A.NAME FROM ANIMAL_OUTS A LEFT JOIN ANIMAL_INS B ON A.ANIMAL_ID = B.ANIMAL_ID WHERE B.ANIMAL_ID IS NULL ORDER BY A.ANIMAL_ID 2. 있었는데요 없었습니다. 관리자의 실수로 일부 동물의 입양일이 잘못 입력되었다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성. 이때 결과는 보호 시작일이 빠른 순으로 조회해야한다. SELECT A.ANIMAL_ID, A.NAME FR..
1. 이름이 없는 동물의 아이디 동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL문을 작성. 단 ID는 오름차순 정렬되어야 함. SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL 2. 이름이 있는 동물의 아이디 동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL문을 작성. 단 ID는 오름차순 정렬되어야 함. SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL 3. NULL 처리하기 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문 작성. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물..
1. 고양이와 개는 몇 마리 있을까 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문 작성. 이때 고양이가 개보다 먼저 조회. SELECT ANIMAL_TYPE, COUNT(*) AS 'count' FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE ASC 2. 동명 동물 수 찾기 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문 작성. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회. SELECT NAME, COUNT(*) AS 'COUNT' FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >= 2 O..
[문제접근] 승패가 매겨진 배열을 통해 유방향 간선 그래프를 만들 수 있다. -> 플로이드 와샬 알고리즘 사용 (처음에는 이 알고리즘이 생각이 안나서 다익스트라..? 이렇게 생각했는데 다른 사람들 풀이 보니까 플로이드 와샬로 하였음.) 가중치는 1로 두고 플로이드 와샬로 풀어주면 된다. 플로이드 와샬 진짜 오랜만이다.. 다시 예전에 공부했던 것들 복습해야겠다. [코드] import java.util.*; class Solution { public int solution(int n, int[][] results) { int answer = 0; int INF = 987654321; int[][] scores = new int[n+1][n+1]; for(int[] score : scores){ Arrays...
[문제 접근] 연결 리스트로 그래프를 구현한 뒤, bfs로 순회하며 간선의 개수를 센다. (최소 간선 경로 이므로 bfs) [코드] import java.util.*; class Solution { public int solution(int n, int[][] edge) { int answer = 0; //bfs ArrayList graph = new ArrayList(); Queue queue = new LinkedList(); int[] depth = new int[n+1]; Arrays.fill(depth, -1); for(int i = 0; i < n + 1; i++){ graph.add(new ArrayList()); } //무방향 그래프이므로 양쪽 다 추가 for(int i = 0; i < e..
1. 최댓값 구하기 가장 최근에 들어온 동물은 언제 들어왔는지 조회. SELECT MAX(DATETIME) AS '시간' FROM ANIMAL_INS 2. 최솟값 구하기 동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL문 SELECT MIN(DATETIME) AS '시간' FROM ANIMAL_INS 3. 동물 수 구하기 동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL문 SELECT COUNT(*) AS 'count' FROM ANIMAL_INS 4. 중복 제거하기 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL문을 작성. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 친다. SELECT COUNT(DISTINCT NAME) FROM A..
초기값 answer을 1로 해주어야 한다는 것을 주의하자. [문제접근] 옷 개수에 따라 경우의 수를 구해야 한다. -> 옷 종류에 따른 개수에 따라 hash map을 구성한다. 경우의 수를 구하는 공식을 구한다. - 각 종류의 옷에 안입는 선택지를 하나 추가 (옷 개수 + 1) - 하나도 안입는 선택지는 없으므로 전체에서 -1 따라서 공식은 (n+1) * (m+1) *... -1 [코드] import java.util.*; class Solution { public int solution(String[][] clothes) { int answer = 1; Map closet = new HashMap(); int val = 0; for(String[] clo : clothes){ if(closet.get(..
해시를 사용하는 방법을 익히기 위해 다른 사람의 코드를 참고하였다. 예제 3번의 조건을 유의해야 했다. (참여자 명단에 두명이 있는 경우) 해시를 사용하면 시간복잡도가 O(n)이 된다. [코드] import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; int val = 0; Map hm = new HashMap(); for(String part : participant){ if(hm.get(part) == null) hm.put(part, 1); else{ val = hm.get(part) + 1; hm.put(part, val); } } ..