TIL 제출하기(매일 23:59 까지)
❤️🔥TIL : Today I Learned
매일 저녁, 공부를 마무리하면서 제출해주세요.
하루에 1%씩만 나아가도 4개월 동안 쌓이면 꽤 덩치가 커진답니다 :)
[TIL을 쓰는 이유]
1. 스스로 어제보다 한 발 더 나아갔다는 것을 자각하기
2. TIL을 쓰기 위해서라도, 오늘 반드시 단 하나라도 배우기
3. 꾸준히 기록을 남기는 습관 가지기
알고리즘 코드카타
문자열 내림차순 정렬 문제 해결하기
이번 포스트에서는 문자열 s를 내림차순으로 정렬하는 문제를 해결해보겠습니다. 이 문제는 문자열을 정렬하는 간단한 문제로, 대문자는 소문자보다 작은 것으로 간주합니다.
문제 설명
문자열 s에 나타나는 문자를 큰 것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수 solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한 사항
- s는 길이 1 이상인 문자열입니다.
입출력 예
sreturn
"Zbcdefg" | "gfedcbZ" |
---|
해결 방법
이 문제를 해결하기 위해서는 다음과 같은 단계를 밟아야 합니다.
- 문자열 s를 문자 배열로 변환합니다.
- 문자 배열을 정렬합니다. 정렬 시 대문자가 소문자보다 작게 간주되도록 합니다.
- 정렬된 문자 배열을 역순으로 배열합니다.
- 새로운 문자열로 변환하여 반환합니다.
아래는 이 문제를 해결하기 위한 Java 코드입니다.
import java.util.Arrays;
import java.util.Collections;
public class Solution {
public String solution(String s) {
// 문자열을 문자 배열로 변환
Character[] charArray = new Character[s.length()];
for (int i = 0; i < s.length(); i++) {
charArray[i] = s.charAt(i);
}
// 문자 배열을 내림차순으로 정렬
Arrays.sort(charArray, Collections.reverseOrder());
// 정렬된 문자 배열을 문자열로 변환
StringBuilder sb = new StringBuilder();
for (char c : charArray) {
sb.append(c);
}
return sb.toString();
}
public static void main(String[] args) {
Solution sol = new Solution();
System.out.println(sol.solution("Zbcdefg")); // "gfedcbZ"
}
}
코드 설명
- Character[] charArray = new Character[s.length()];를 사용하여 문자열 s를 문자 배열로 변환합니다.
- Arrays.sort(charArray, Collections.reverseOrder());를 사용하여 문자 배열을 내림차순으로 정렬합니다.
- StringBuilder를 사용하여 정렬된 문자 배열을 문자열로 변환합니다.
- 최종 결과 문자열을 반환합니다.
SQL 코드카타
주어진 문제를 해결하기 위해, 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL 쿼리를 작성하겠습니다. 결과는 보호 시작일이 빠른 순으로 정렬해야 합니다.
테이블 구조
- ANIMAL_INS 테이블:
- ANIMAL_ID: VARCHAR(N), 동물 ID
- ANIMAL_TYPE: VARCHAR(N), 생물 종
- DATETIME: DATETIME, 보호 시작일
- INTAKE_CONDITION: VARCHAR(N), 보호 시작 시 상태
- NAME: VARCHAR(N), 이름
- SEX_UPON_INTAKE: VARCHAR(N), 성별 및 중성화 여부
- ANIMAL_OUTS 테이블:
- ANIMAL_ID: VARCHAR(N), 동물 ID
- ANIMAL_TYPE: VARCHAR(N), 생물 종
- DATETIME: DATETIME, 입양일
- NAME: VARCHAR(N), 이름
- SEX_UPON_OUTCOME: VARCHAR(N), 성별 및 중성화 여부
SQL 쿼리
SELECT
INS.ANIMAL_ID,
INS.NAME
FROM
ANIMAL_INS INS
JOIN
ANIMAL_OUTS OUTS
ON
INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE
INS.DATETIME > OUTS.DATETIME
ORDER BY
INS.DATETIME;
쿼리 설명
- SELECT 문: ANIMAL_INS 테이블의 ANIMAL_ID와 NAME 컬럼을 선택합니다.
- FROM 문: ANIMAL_INS 테이블을 기준으로 ANIMAL_OUTS 테이블과 조인합니다.
- JOIN 문: ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블을 ANIMAL_ID를 기준으로 조인합니다.
- WHERE 문: 보호 시작일 (INS.DATETIME)이 입양일 (OUTS.DATETIME)보다 늦은 경우를 필터링합니다.
- ORDER BY 문: 보호 시작일 (INS.DATETIME)을 기준으로 오름차순 정렬합니다.
결과
위의 SQL 쿼리를 실행하면 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 보호 시작일이 빠른 순으로 조회할 수 있습니다. 예시 데이터에서 쿼리를 실행하면 다음과 같은 결과가 나옵니다:
ANIMAL_IDNAME
A381217 | Cherokee |
---|
이 쿼리를 통해 관리자의 실수로 인해 보호 시작일보다 입양일이 더 빠른 동물의 정보를 정확히 조회할 수 있습니다.
느낀점
'TIL > 스파르타 코드카타' 카테고리의 다른 글
[내일배움캠프] 사전캠프 코드카타 36번 문제 (0) | 2024.09.03 |
---|---|
[내일배움캠프] 사전캠프 코드카타 35번 문제 (0) | 2024.09.03 |
[내일배움캠프] 사전캠프 코드카타 33번 문제 (0) | 2024.09.03 |
[내일배움캠프] 사전캠프 코드카타 32번 문제 (0) | 2024.09.03 |
[내일배움캠프] 사전캠프 코드카타 31번 문제 (0) | 2024.09.03 |