분류 전체보기 56

프로그래머스 SQL - 서울에 위치한 식당 목록 출력하기

1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/131118 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 2. 풀이문제에서 LIKE '%서울'은 정답인데 '%서울%'은 오답됨 ㅠ 어이 XLIKE% : 모든 문자를 대체(공백 가능)_ : 한 글자 대체HAVINGGROUP BY와 꼭 같이 써야됨특정 그룹 선택하고 싶을 때COUNT, SUM, AVG, MAX, MIN 등 집계함수 사용 가능3. 정답SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, ..

SQL 2024.07.21

프로그래머스 SQL - 대장균의 크기에 따라 분류하기 2

1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/301649 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 2. 풀이MySQL의 `NTITLE 함수` 사용해서 풀이할 수 있다.NTILE정의특정한 컬럼의 값을 기준으로 N개 등급으로 분류하는 함수사용법SELECT NTILE([나눌 정수]) OVER (PARTITION BY [컬럼1] ORDER BY [컬럼2]) PATITION BY [컬럼1] 하면 [컬럼1]에서 파티션 나누고 파티션 내에서 N 등급PATITION BY 는 생략 가능전체 행 개수를 ..

SQL 2024.07.21

[백준 11404] 플로이드 (플로이드 와샬 알고리즘) - 자바(JAVA)

1. 문제 https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 2. 풀이 모든 정점 쌍에 대해서 A에서 B로 가는데 필요한 비용의 최솟값을 구할 때는 플로이드 와샬 알고리즘을 사용해서 구할 수 있다. 3. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public ..

알고리즘 2023.10.11

[백준 1197] 최소 스패닝 트리 (MST, 크루스칼 알고리즘) - 자바(JAVA)

1. 문제 https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 2. 풀이 최소 스패닝 트리(MST)는 주어진 그래프의 모든 정점들을 연결하는 부분 그래프 중에서 가중치의 합이 최소인 트리이다. MST는 크루스칼, 프림 알고리즘 두 가지로 구할 수 있다. 간선이 적을 때는 크루스칼, 간선이 많을 때는 프림 알고리즘이 효율적이라고 한다. 이 문제에서는 Union Find를 사용하는 크루스칼 알고리즘으로 문..

알고리즘 2023.10.11

[백준 1753] 최단경로 (다익스트라 알고리즘) - 자바(JAVA)

1. 문제 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 2. 풀이 방향그래프가 주어질 때 한 시작점에서 다른 모든 정점으로의 최댄 경로를 구하는 문제이다. 다익스트라 알고리즘으로 문제를 풀 수 있다. 다익스트라 알고리즘은 PriorityQueue를 사용한다 ! 3. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.I..

알고리즘 2023.10.11

모던 자바 인 액션 - CH06. 스트림으로 데이터 수집(2)

6.4 분할 분할은 분할 함수라 불리는 프레디케이트를 분류 함수로 사용하는 특수한 그룹화 기능이다. 분할 함수는 불리언을 반환하므로 맵의 키 형식은 Boolean이다. -> 그룹화 맵은 최대 (참 or 거짓) 두 개의 그룹으로 분류됨 // 채익 요리와 채식이 아닌 요리로 분류 Map partitionedMenu = menu.stream().collect(partitioningBy(Dish::isVegetarian)); // 분할 함수 // 채식 요리를 얻기 List vegitarianDishes = partitionedMenu.get(true); // 프레디케이트로 필터링한 다음에 별도의 리스트에 결과를 수집해도 같은 결과를 얻을 수 있다. List vegitarianDishes = menu.stream..

JAVA 2023.09.12

모던 자바 인 액션 - CH06. 스트림으로 데이터 수집(1)

들어가기 전에... 이 장에서는 reduce가 그랬던 것처럼 collect 역시 다양한 요소 누적 방식을 인수로 받아서 스트림을 최종 결과로 도출하는 리듀싱 연산을 수행할 수 있음을 설명한다. Stream에 toList를 사용하는 대신 더 범용적인 컬렉터 파라미터를 collect 메서드에 전달함으로써 원하는 연산을 간결하게 구현할 수 있음을 지금부터 배우게 될 것이다. Map transactionsByCurrencies = transactions.stream().collect(groupingBy(Transaction::getCurrency)); 6.1 컬렉터란 무엇인가? 이전 예제엇 collect 메서드로 Collector 인터페이스 구현을 전달했다. Collector 인터페이스의 구현은 스트림의 요소를..

JAVA 2023.09.04

모던 자바 인 액션 - CH05. 스트림 활용

5.1 필터링 스트림의 요소를 선택하는 방법, 즉 프레디케이트 필터링 방법과 고유 요소만 필터링하는 방법을 배운다. 5.1.1 프레디케이트로 필터링 스트림 인터페이스는 filter 메서드를 지원한다. filter 메서드는 프레디케이트(불리언을 반환하는 함수)를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다. List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(toList()); 5.1.2 고유 요소 필터링 스트림은 고유 요소로 이루어진 스트림을 반환하는 distinct 메서드도 지원한다. 고유 여부는 스트림에서 만든 객체의 hashCode, equals로 결정된다. List numbers = Ar..

JAVA 2023.08.22

모던 자바 인 액션 - CH04. 스트림 소개

4.1 스트림이란 무엇인가? 스트림(Streams)은 자바 8 API에 새로 추가된 기능이다. 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있다. 스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 다음 예제는 저칼로리 요리명을 반환하고, 칼로리를 기준으로 요리를 정렬하는 자바7 코드이다. List lowCaloricDishes = new ArrayList(); for(Dish dish: menu) { if(dish.getCalories() < 400) { lowCaloricDishes.add(dish); } } Collections.sort(lowCaloricDishes, new Comparator() { public int compare(Dish ..

JAVA 2023.08.15

[백준 11060] 점프 점프 - 자바(JAVA)

1. 문제 https://www.acmicpc.net/problem/11060 11060번: 점프 점프 재환이가 1×N 크기의 미로에 갇혀있다. 미로는 1×1 크기의 칸으로 이루어져 있고, 각 칸에는 정수가 하나 쓰여 있다. i번째 칸에 쓰여 있는 수를 Ai라고 했을 때, 재환이는 Ai이하만큼 오른쪽으로 www.acmicpc.net 2. 풀이 `DP`로 문제를 풀었습니다. dp배열은 해당 칸까지 가는데 걸리는 최소 점프 횟수입니다. 만약에 data[3]=3이고 dp[3]=2라면 3번째 칸 까지 가는 최소 점프 횟수는 2번인데 3번째 칸에서 4, 5, 6칸을 갈 수 있는데 점프를 하니까 3번(dp[3]+1)만에 갈 수 있습니다. 최소면 갱신하고 아니라면 무시하면 됩니다. 이렇게 최솟값을 갱신하면서 dp[0..

알고리즘 2023.08.10