4일차 밀려서 호다닥 쓰고 뒤늦게 시작한 5일차
Sorting and Grouping | 1141. User Activity for the Past 30 Days I
select to_char(activity_date, 'yyyy-mm-dd') day, count(distinct user_id) active_users
from Activity
where activity_date between to_date('2019-07-27', 'yyyy-mm-dd')-29 and to_date('2019-07-27', 'yyyy-mm-dd')
group by activity_date
order by day
이제 MySQL 보다 오라클이 편해진..
처음에 30일 기간 어쩌구 하길래 30일 이전부터 ~ 조건을 걸었는데 틀린 예제 답을 보니 30일 전 데이터는 포함이 아니였다.
알고리즘 문제 풀이 시간을 늘릴려고 SQL 문제를 대폭 줄이거나 생략할까 한다. 난 시간이 없거덩
10431. 줄세우기 https://www.acmicpc.net/problem/10431
실버5 | 구현
보자마자 생각났던 버블정렬. 학부때는 외워서 그냥 아무생각 없이 짰던 코드인데 버블정렬 다시 생각하려니까 잘 안된다..
import java.io.*;
import java.util.StringTokenizer;
public class Main {
static int[] arr;
static int T, num, i;
static int cnt=0;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int tc=0; tc<T; tc++) {
StringTokenizer st = new StringTokenizer(br.readLine());
num = Integer.parseInt(st.nextToken());
i=0;
arr = new int[20];
cnt = 0;
while(st.hasMoreTokens()) {
arr[i]=Integer.parseInt(st.nextToken());
i++;
}
for(i=1; i<20; i++) {
for(int j=0; j<20-i; j++) {
if(arr[j] > arr[j+1]) swap(j, j+1);
}
}
System.out.println(num+" "+cnt);
}
}
static void swap(int a, int b) {
int tmp = arr[a];
arr[a] = arr[b];
arr[b] = tmp;
cnt++;
}
}
🫧 버블정렬 : 간단하지만 효율적이진 않아 자주 쓰이진 않는 정렬 알고리즘
for(int i=0; i<N; i++) { // 전체 확인해야 하는 배열 원소 수
for(int j=0; j<N-i-1; j++) { // 실제 확인하는 인덱스
if(arr[j] > arr[j+1]) swap(j, j+1);
}
}
8979. 올림픽 https://www.acmicpc.net/problem/8979
실버5 | 구현
import java.util.Scanner;
public class Main {
static int n, k;
static int[][] medals;
static int idx;
static int rank=1;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
k = sc.nextInt();
medals = new int[n+1][3];
for(int i=0; i<n; i++) {
idx = sc.nextInt();
medals[idx][0] = sc.nextInt();
medals[idx][1] = sc.nextInt();
medals[idx][2] = sc.nextInt();
}
for(int i=1; i<n+1; i++) {
if(i==k) continue;
if(medals[i][0] > medals[k][0])
rank++;
else if(medals[i][0] == medals[k][0])
if(medals[i][1] > medals[k][1])
rank++;
else if(medals[i][1] == medals[k][1])
if(medals[i][2] > medals[k][2])
rank++;
}
System.out.println(rank);
}
}
이런 류의 문제를 좀 어려워하는데 막상 풀이 찾아보면 그냥 문제 그대로 구현하여 간단히 푸는 경우가 많다. 너무 어렵게 생각하지 말고 문제를 잘 활용하자!
이래가지고 코테 어떻게 볼거냐 멍충아 😱
7568. 덩치 https://www.acmicpc.net/problem/7568
실버5 | 구현, Brute Force
import java.util.Scanner;
public class Main {
static int[] rank;
static class Body{
int h, w;
public Body() {}
public Body(int h, int w){
this.h=h;
this.w=w;
}
}
static Body[] arr;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
arr = new Body[n];
rank = new int[n]; // 0으로 초기화
for(int i=0; i<n; i++) {
arr[i]=new Body();
arr[i].h=sc.nextInt();
arr[i].w=sc.nextInt();
}
for(int i=0; i<n; i++) { // 비교 기준
for(int j=0; j<n; j++) { // 상대
if(i==j) continue;
if((arr[i].h < arr[j].h) && arr[i].w < arr[j].w) rank[i]++;
}
}
for(int i=0; i<n; i++) System.out.print(rank[i]+1+" ");
}
}
바로 위 문제(8979)와 비슷한 유형의 문제
할수이따.. 오늘 실버 5 끝내자!!
4659. 비밀번호 발음하기 https://www.acmicpc.net/problem/4659
실버5 | 구현
TODO
[1일1커밋 7D] 연휴 끝! 다시 시작하는 1일1커밋 챌린지 | SWEA S/W 문제해결 기본 4일차 (3) | 2024.09.23 |
---|---|
[1일1커밋 6D] 재귀 푸는 중.. | 백준 JAVA 27433, 10870, 25501 (1) | 2024.09.08 |
[1일1커밋 4D] LeetCode SQL & 백준 JAVA 11723, 9655 (비트 뭐시기와 DP) (2) | 2024.09.06 |
[1일1커밋 3D] LeetCode SQL & 백준 JAVA 23971, 5073, 2292, 7562 (수학.. 그래프 순회) (2) | 2024.09.04 |
[1일1커밋 2D] LeetCode SQL 50 & 백준 JAVA 1085 (0) | 2024.09.03 |
댓글 영역