class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 1; i <= n; i++) {
int sum = 0;
for(int j = i; j <= n; j++) {
sum += j;
if(sum == n) {
answer++;
break;
} else if(sum > n) {
break;
}
}
}
return answer;
}
}
연속한 자연수들로 표현 하는 방법
을 어떻게 풀이할지 생각하다가 이중 for문으로 구현했다.import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int[][] dir = {
{-1, 0}, {1, 0}, {0, -1}, {0, 1}
};
static int[][] map;
static int[][] dp;
static int N, ans;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
N = stoi(br.readLine());
ans = 0;
map = new int[N][N];
dp = new int[N][N];
// 맵 정보 입력
for(int r = 0 ; r < N ; ++r) {
st = new StringTokenizer(br.readLine());
for(int c = 0 ; c < N ; ++c) {
map[r][c] = stoi(st.nextToken());
}
}
// DP 테이블 갱신과 동시에 최댓값 갱신
// DP 테이블은 해당 지역에서 이동할 수 있는 최댓값이다.
for(int r = 0 ; r < N ; ++r) {
for(int c = 0 ; c < N ; ++c) {
int way = dfs(r, c);
ans = way > ans ? way : ans;
}
}
System.out.println(ans);
}
private static int dfs(int r, int c) {
// 이미 갱신된 지역은 바로 그 값을 리턴한다.
if(dp[r][c] != 0) return dp[r][c];
// 1로 초기화
dp[r][c] = 1;
// 해당 지점 기준 4방 탐색
for(int d = 0 ; d < 4 ; ++d) {
int nr = r + dir[d][0];
int nc = c + dir[d][1];
if(nr >= N || nr < 0 || nc >= N || nc < 0) continue;
// 다음 지역은 이전 지역보다 커야한다.
if(map[nr][nc] > map[r][c]) {
// 기존의 값과 새로 탐색한 값 중에 최댓값으로 갱신
dp[r][c] = Math.max(dp[r][c], dfs(nr, nc) + 1);
}
}
return dp[r][c];
}
private static int stoi(String s) {
return Integer.parseInt(s);
}
}
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE name in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
ORDER BY ANIMAL_ID;
동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty
인 동물의 이름이 포함된 것을 조회하는 경우,
SQL의 IN을 사용해서 특정 이름값만 조회하도록 한다.
WHERE 컬럼명 IN('값1', '값2', ...)
이런 식으로 활용한다.
해당 문제에서 해당하지 않지만, 특정 값이 아닌 경우에는 NOT IN('값1', '값2', ...)
식으로도 활용이 가능하다.
SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1), 1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING AVERAGE_DURATION >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
CAR_RENTAL_COMPANY_RENTAL_HISTORY
테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명 : AVERAGE_DURATION
) 리스트를 출력하는 SQL문을 작성하는 문제였다.
평균 대여 기간은 소수점 두 번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬하고,
평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬한다.