import java.util.*;
public class Solution {
public int[] solution(int []arr) {
List <Integer> list = new ArrayList<>();
for(int i = 0; i < arr.length; i++){
if(i == 0){
list.add(arr[0]);
}else{
// [1,1,3,3,0,1,1]
// 배열의 값들이 같은지 확인
if(arr[i-1] == arr[i]){
continue;
}else{
list.add(arr[i]);
}
}
}
int[] answer = new int[list.size()];
// 배열에 list 값들을 담아준다.
for(int j = 0 ; j < list.size(); j++){
answer[j] = list.get(j);
}
return answer;
}
}
프로그래머스 SQL (SELECT LEVER 1 , 소마 1차 테스트 준비)
# 소수 첫번째 = ROUND 0, AS = 별칭
SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = "SUV"
프로그래머스 SQL (SELECT LEVER 2 , 소마 1차 테스트 준비)
# NULL이 아닐 조건 예시 : TLSO IS NOT NULL
# 단어가 조건일시 : 무조건 작은 따옴표 ''(O)
# 오름차순 정렬일시 ORDER BY
# 내림차순 정렬일시 ORDER BY DESC
# DATE_FORMAT = 테이블을 치환한다. %Y = 년도, %m = 월, %d = 일 대소문자 주의
SELECT MEMBER_ID, MEMBER_NAME, GENDER,
DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH) = 3
AND TLNO IS NOT NULL
AND GENDER = 'W'
ORDER BY MEMBER_ID;
프로그래머스 SQL (SELECT LEVER 1 , 소마 1차 테스트 준비)
## LIKE = 같은,
# 강원도% = 강원도로 시작해서 끝나는건 아무문자나
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%'
ORDER BY FACTORY_ID;
프로그래머스 SQL (SELECT LEVER 1 , 소마 1차 테스트 준비)
# ~일때는 내림차순, ~일때는 오름차순 이면
## ORDER BY AGE DESC, AGE 나이는 내림차순, PT_NAME는 오름차순이된다.
# IFNULL = NULL 일경우 값 지정 (띄어쓰기 X)
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME;
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
for(int i = 0; i < commands.length; i++){
int a;
int b;
int c;
a = commands[i][0]; // 2
b = commands[i][1]; // 5
c = commands[i][2]; // 3
// index를 기준으로 복사, (1,3) 이면 index 기준 (0,2)가됨
int [] total = Arrays.copyOfRange(array, a-1, b);
Arrays.sort(total);
answer[i] = total[c-1];
}
return answer;
}
}
프로그래머스 SQL (SELECT LEVER 1 , 소마 1차 테스트 준비)
# 날짜로 조건이 나오면 무조건 DATE_FORMAT을 해본다
SELECT DR_NAME, DR_ID, MCDP_CD,
DATE_FORMAT(HIRE_YMD, "%Y-%m-%d") AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD LIKE 'CS' OR MCDP_CD LIKE 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME;
프로그래머스 SQL (SELECT JOIN LEVER 1 , 소마 1차 테스트 준비)
# SELET : 조인하여 결과물로 만들 테이블
# FROM : (INNER) 생략가능 JOIN할 테이블 작성
# ON : 테이블 기본키 = 상대 테이블 외래키
# WHERE : 단일 테이블 조건 작성하듯이 작성
SELECT FIRST_HALF.FLAVOR
FROM FIRST_HALF JOIN ICECREAM_INFO
ON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVOR
WHERE TOTAL_ORDER > 3000 AND INGREDIENT_TYPE LIKE 'fruit%'
ORDER BY TOTAL_ORDER DESC;
프로그래머스 SQL (SELECT LEVER 1 , 소마 1차 테스트 준비)
# 날짜 : YEAR() : 년 반환, MONTH() : 월 반환
SELECT BOOK_ID,
DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK
WHERE YEAR(PUBLISHED_DATE) = 2021 AND CATEGORY LIKE '인문'
ORDER BY BOOK_ID;
프로그래머스 SQL , GROUP BY (SELECT LEVER 2 , 소마 1차 테스트 준비)
# GROUP BY는 특정 컬럼을 그룹 짓는다. 보통 집합 합수와 같이 쓰인다
# (AVG, COUNT, SUM)
# HAVING는 GROUP BY 의 WHERE절 같은 느낌
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING count(*) >=2
ORDER BY USER_ID ASC, PRODUCT_ID DESC;
class Solution {
public int solution(int[][] sizes) {
int answer = 0;
int wMax = 0;
int hMax = 0;
for(int i = 0 ; i < sizes.length; i++){
//[[60, 50], [30, 70], [60, 30], [80, 40]]
int w = Math.max(sizes[i][0], sizes[i][1]);
int h = Math.min(sizes[i][0], sizes[i][1]);
// 지금 까지 입력된 값을 비교
wMax = Math.max(wMax,w);
hMax = Math.max(hMax,h);
}
return wMax * hMax;
}
}