728x90
데일리루틴 SQL
MySQL 3월에 태어난 여성 회원 목록 출력하기 정답입니다.
SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE DATE_FORMAT(DATE_OF_BIRTH, '%m') = 3 AND TLNO IS NOT NULL AND GENDER = 'W'
ORDER BY MEMBER_ID
- MONTH(DATE_OF_BIRTH) = 3:
- 생일의 월이 3월인 회원만 조회합니다.
- GENDER = 'W':
- 여성 회원만 필터링합니다.
- TLNO IS NOT NULL:
- 전화번호가 NULL이 아닌 경우만 조회합니다.
- ORDER BY MEMBER_ID ASC:
- 회원 ID를 기준으로 오름차순 정렬합니다.
- DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH:
- 생년월일의 포맷을 YYYY-MM-DD로 출력합니다.
데일리루틴 알고리즘
Java 시저 암호 정답입니다.
class Solution {
public String solution(String s, int n) {
StringBuilder answer = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch >= 'a' && ch <= 'z') { // 소문자일 경우
char shifted = (char) ((ch - 'a' + n) % 26 + 'a');
answer.append(shifted);
} else if (ch >= 'A' && ch <= 'Z') { // 대문자일 경우
char shifted = (char) ((ch - 'A' + n) % 26 + 'A');
answer.append(shifted);
} else { // 공백일 경우
answer.append(ch);
}
}
return answer.toString();
}
}
- 문자열 s의 각 문자를 하나씩 확인하면서 대소문자를 구분하여 처리합니다.
- 만약 문자가 소문자(a ~ z)라면, (ch - 'a' + n) % 26 + 'a'를 통해 문자를 순환적으로 밀어줍니다.
- 대문자(A ~ Z)도 동일한 방식으로 처리합니다.
- 공백 문자는 그대로 유지됩니다.
- 최종 결과 문자열은 StringBuilder를 사용해 만들고 반환합니다.
가장 구현하기 어려웠던 char shifted = (char) ((ch - 'a' + n) % 26 + 'a'); 설명
- ch - 'a':
- 여기서 ch는 현재 처리하고 있는 문자입니다.
- 'a'는 ASCII 값으로 97이고, ch - 'a'는 문자 ch가 'a'로부터 얼마나 떨어져 있는지를 계산하는 것입니다.
- 예를 들어, 만약 ch가 'c'라면, 'c' - 'a'는 2가 됩니다. 이는 알파벳에서 'c'가 'a'로부터 2번째 떨어져 있다는 것을 의미합니다.
- (ch - 'a' + n):
- 이제 n을 더하여 문자 ch를 n만큼 이동시킵니다.
- 예를 들어, ch가 'c'이고, n이 3이라면, (ch - 'a' + n)은 2 + 3 = 5가 됩니다.
- 이는 'c'에서 알파벳 순서로 3만큼 뒤로 이동한 값을 의미합니다.
- (ch - 'a' + n) % 26:
- 알파벳은 총 26글자로 이루어져 있으므로, % 26 연산을 통해 알파벳 순환을 처리합니다.
- 예를 들어, 'z'에서 1만큼 밀 경우, 'a'로 돌아가야 합니다. 따라서 모듈러 연산을 사용하여 26을 넘어가는 경우 알파벳의 처음으로 돌아가게 합니다.
- 예를 들어, 'z'에 대해 (ch - 'a' + n)이 25 + 1 = 26이 됩니다. 이때 26 % 26은 0이 되어 'a'로 돌아가게 됩니다.
- (ch - 'a' + n) % 26 + 'a':
- (ch - 'a' + n) % 26의 결과는 'a'로부터 몇 번째 떨어져 있는지에 대한 숫자가 됩니다.
- 이를 다시 'a'에 더해주어 이동된 알파벳 문자로 변환합니다.
- 예를 들어, (ch - 'a' + n) % 26이 5라면, 5 + 'a'는 문자 'f'가 됩니다.
- (char):
- 최종적으로 이 값은 정수이기 때문에, 이를 문자로 형변환하기 위해 (char)를 사용합니다.
- 이렇게 하면 최종적으로 이동된 알파벳 문자(shifted)가 됩니다.
728x90
반응형
LIST
'Sparta > 데일리루틴' 카테고리의 다른 글
TIL(Today I Learned)_데일리루틴_24.11.22.Fri (0) | 2024.11.22 |
---|---|
TIL(Today I Learned)_데일리루틴_24.11.21.Thr (0) | 2024.11.21 |
TIL(Today I Learned)_데일리루틴_24.11.19.Tue (0) | 2024.11.19 |
TIL(Today I Learned)_데일리루틴_24.11.18.Mon (0) | 2024.11.18 |
TIL(Today I Learned)_데일리루틴_24.11.17.Sun (0) | 2024.11.17 |