SELECT product_id
FROM Products
WHERE low_fats = 'Y'
AND recyclable = 'Y'
;
class Solution {
public String solution(String s, int n) {
char[] arr = s.toCharArray();
char[] ans = new char[arr.length];
int i = 0;
for (char c : arr) {
if (c == ' ') {
ans[i++] = c;
} else if (c >= 'a' && c <= 'z') {
int offset = (c - 'a' + n) % 26;
ans[i++] = (char) ('a' + offset);
} else if (c >= 'A' && c <= 'Z') {
int offset = (c - 'A' + n) % 26;
ans[i++] = (char) ('A' + offset);
} else {
ans[i++] = c;
}
}
return String.valueOf(ans);
}
}
자바에서
char는 내부적으로 16비트 정수(유니코드 코드포인트)라서 산술 연산이 되면 자동으로int로 승격된다. 그래서c - 'a'같은 연산은 결과가int가 되고, 그걸int변수에 담을 수 있다. 예를 들자면'b' - 'a'는1이 된다.
class Solution {
public int solution(String s) {
String[] nums = {"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"};
StringBuilder outs = new StringBuilder();
int i = 0;
while (i < s.length()) {
if (Character.isDigit(s.charAt(i))) {
outs.append(s.charAt(i));
i++;
continue;
} // 숫자인지 확인
for (String num : nums) {
if (s.startsWith(num, i)) {
outs.append(wordToInt(num));
i += num.length();
break;
}
} // 문자열
}
return Integer.parseInt(outs.toString());
}
int wordToInt(String s) {
return switch (s.toLowerCase()) {
case "zero" -> 0;
case "one" -> 1;
case "two" -> 2;
case "three" -> 3;
case "four" -> 4;
case "five" -> 5;
case "six" -> 6;
case "seven" -> 7;
case "eight" -> 8;
case "nine" -> 9;
default -> throw new IllegalArgumentException("unknown: " + s);
};
}
}