목록전체 글 (110)
조앤의 기술블로그
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); } } ..
[1차 코드 - 실패] import java.util.*; class Solution { static class Node { int index; int value; public Node(int index, int value){ this.index = index; this.value = value; } } public int solution(int[] priorities, int location) { int answer = 0; Queue pq = new LinkedList(); int[] printing = new int[priorities.length]; for(int i = 0; i < priorities.length; i++){ pq.add(new Node(i, priorities[i])); } i..
[문제] [문제접근] [코드] class Solution { public int solution(String skill, String[] skill_trees) { int answer = 0; boolean[] visit = new boolean[skill.length()]; for(int i = 0; i < skill_trees.length; i++){ String mySkill = skill_trees[i]; int skillIndex = 0; boolean flag = true; for(int j = 0; j < mySkill.length(); j++){ for(int k = 0; k < skill.length(); k++){ if(skill.charAt(k) == mySkill.charAt(j))..