Day79

강태훈·2026년 4월 23일

nbcamp TIL

목록 보기
79/97

알고리즘 코드카타

Queries Quality and Percentage

SELECT 
    query_name,
    ROUND(AVG(rating / position), 2) AS quality,
    ROUND(SUM(CASE WHEN rating < 3 THEN 1 ELSE 0 END) * 100 / COUNT(*), 2) AS poor_query_percentage
FROM Queries
WHERE query_name IS NOT NULL
GROUP BY query_name;

대충 만든 자판

import java.util.Arrays;

class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        int[] answer = new int[targets.length];
        char[][] keys = new char[keymap.length][];
        for (int i = 0; i < keymap.length; i++) {
            keys[i] = new char[keymap[i].length()];
            keys[i] = keymap[i].toCharArray();
        }
        for(int i = 0; i < targets.length; i++) {
            answer[i] = 0;
            for(char t: targets[i].toCharArray()){
                if (findTarget(keys,t) == -1){
                    answer[i] = -1;
                    break;
                }else {
                    answer[i] += findTarget(keys,t);
                }
            }
        }

        return answer;
    }

    public int findTarget(char[][] keymap, char target) {
        int[] indexes = new int[keymap.length];

        for (int i = 0; i < keymap.length; i++) {
            indexes[i] = 200; // keymap의 최대 원소길이가 100

            for (int j = 0; j < keymap[i].length; j++) {
                if (keymap[i][j] == target) {
                    indexes[i] = j + 1;
                    break;
                }
            }
        }
        int index = Arrays.stream(indexes).min().getAsInt();
        if (index == 200){
            return -1;
        } else {
            return index;
        }
    }
}

0개의 댓글