답안 :
import java.util.HashMap;
import java.util.Map;
public class Solution {
public String solution(String[] survey, int[] choices) {
StringBuffer sb = new StringBuffer();
char c = ' ';
Map<Character, Integer> map = new HashMap<>();
map.put('R', 0);
map.put('T', 0);
map.put('C', 0);
map.put('F', 0);
map.put('J', 0);
map.put('M', 0);
map.put('A', 0);
map.put('N', 0);
for (int i = 0; i < survey.length; i++) {
int score = choices[i] - 4;
if (score < 0) {
score *= -1;
c = survey[i].charAt(0);
if (map.containsKey(c)) {
map.put(c, map.get(c) + score);
} else {
map.put(c, score);
}
} else {
c = survey[i].charAt(1);
if (map.containsKey(c)) {
map.put(c, map.get(c) + score);
} else {
map.put(c, score);
}
}
}
if (map.get('R') >= map.get('T')) {
sb.append('R');
} else {
sb.append('T');
}
if (map.get('C') >= map.get('F')) {
sb.append('C');
} else {
sb.append('F');
}
if (map.get('J') >= map.get('M')) {
sb.append('J');
} else {
sb.append('M');
}
if (map.get('A') >= map.get('N')) {
sb.append('A');
} else {
sb.append('N');
}
String answer = sb.toString();
return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution s = new Solution();
String[] survey = { "TR", "RT", "TR" };
int[] choices = { 7, 1, 3};
System.out.println(s.solution(survey, choices));
}
}
HashMap 을 이용해 각 유형별 점수를 저장. 초이스의 점수에 따라 음수일 경우 앞성향 양수일경우 뒷성향으로 분간하여 해당 점수를 맞는 성향의 점수에 더한다. 이후 저장된 성향점수를 가지고 성향을 결정, 반환한다.답안 :
SELECT
C.CAR_ID,
C.CAR_TYPE,
FLOOR(C.DAILY_FEE * 30 * (1 - DP.DISCOUNT_RATE / 100)) AS FEE
FROM
CAR_RENTAL_COMPANY_CAR C
LEFT JOIN
CAR_RENTAL_COMPANY_RENTAL_HISTORY RH
ON C.CAR_ID = RH.CAR_ID
AND RH.START_DATE <= '2022-11-30'
AND RH.END_DATE >= '2022-11-01'
JOIN
CAR_RENTAL_COMPANY_DISCOUNT_PLAN DP
ON C.CAR_TYPE = DP.CAR_TYPE
AND DP.DURATION_TYPE = '30일 이상'
WHERE
C.CAR_TYPE IN ('세단', 'SUV')
AND RH.HISTORY_ID IS NULL -- 2022년 11월 1일~30일 사이에 대여 이력이 없는 자동차만 선택
HAVING
FEE >= 500000 AND FEE < 2000000
ORDER BY
FEE DESC,
C.CAR_TYPE ASC,
C.CAR_ID DESC;
틀린답안 :
select CAR_ID,CAR_TYPE,case when CAR_TYPE='세단' then Round(FEE-(FEE*0.1),0)
else Round(FEE-(FEE*0.08),0) end as 'FEE'
from
(SELECT c1.CAR_ID,c1.CAR_TYPE,if(DAILY_FEE*30 between 500000 AND 2000000,DAILY_FEE*30,null) as 'FEE',date_format(c2.END_DATE,'%Y-%m') as 'END_DATE'
from CAR_RENTAL_COMPANY_CAR c1
inner join CAR_RENTAL_COMPANY_RENTAL_HISTORY c2
on c1.CAR_ID = c2.CAR_ID
where c1.CAR_TYPE = '세단' OR c1.CAR_TYPE ='SUV') a
where END_DATE not in ('2022-11') and FEE is not null
group by CAR_ID
order by FEE desc, CAR_TYPE, CAR_ID desc