CODEKATA 46 ~ 50

Tak Jeon·2025년 1월 7일

알고리즘

목록 보기
61/101

46번 숫자 문자열과 영단어

import java.util.*;

class Solution {
    
    public int solution(String s) {
        Map<String, String> numMap = new HashMap<>();
        
        numMap.put("zero","0");
        numMap.put("one","1");
        numMap.put("two","2");
        numMap.put("three","3");
        numMap.put("four","4");
        numMap.put("five","5");
        numMap.put("six","6");
        numMap.put("seven","7");
        numMap.put("eight","8");
        numMap.put("nine","9");
        
        for(String key : numMap.keySet()){
            s = s.replaceAll(key, numMap.get(key));
        }
        return Integer.parseInt(s);
    }
}

47번 문자열 내 마음대로 정렬하기

import java.util.*;

class Solution {
    
    public String[] solution(String[] strings, int n) {
        String[] answer = new String[strings.length];
        for(int i = 0 ; i < strings.length ; i++){
            answer[i] = strings[i].charAt(n) + strings[i];
        }
        Arrays.sort(answer);
        for(int i = 0 ; i < answer.length; i++){
            answer[i] = answer[i].substring(1);
        }
        return answer;
    }
    
    //다른 풀이
    public String[] solution(String[] strings, int n) {
        Arrays.sort(strings, new Comparator<String>(){
            @Override
            public int compare(String s1, String s2){
                return s1.charAt(n) - s2.charAt(n) != 0 ? s1.charAt(n) - s2.charAt(n) : s1.compareTo(s2);
            }
        });
        return strings;
    }
}

48번 K번째수

import java.util.*;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        for(int i = 0 ; i < commands.length ; i++){
            int[] tempArr = Arrays.copyOfRange(array, commands[i][0] - 1, commands[i][1]);
            Arrays.sort(tempArr);
            answer[i] = tempArr[commands[i][2] - 1];
        }
        return answer;
    }
}

49번 두 개 뽑아서 더하기

import java.util.*;

class Solution {
    public int[] solution(int[] numbers) {
        Set<Integer> set = new HashSet<>();

        for(int i = 0 ; i < numbers.length ; i++){
            for(int j = 0 ; j < numbers.length ; j++){
                if(i != j){
                    set.add(Integer.valueOf(numbers[i] + numbers[j]));
                }
            }
        }
        
        int[] answer = new int[set.size()];
        int idx = 0;
        for (int i : set) {
            answer[idx++] = i;
        }
        Arrays.sort(answer);

        return answer;
    }
}

50번 가장 가까운 같은 글자

import java.util.*;

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        int[] idx = new int[26];
        Arrays.fill(idx, -1);
        for(int i = 0 ; i < s.length(); i++){
            char cur = s.charAt(i);
            if(idx[cur - 'a'] == -1){
                answer[i] = idx[cur - 'a'];
                idx[cur - 'a'] = i;
            }else{
                answer[i] = i - idx[cur - 'a'];
                idx[cur - 'a'] = i;
            }
        }
        return answer;
    }
}
profile
문제 해결을 좋아하는 개발자 입니다 :)

0개의 댓글