Day61

강태훈·2026년 3월 30일

nbcamp TIL

목록 보기
61/97

알고리즘 코드카타

(sql)Recyclable and Low Fat Products

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);
        };
    }
}

0개의 댓글