본문 바로가기
TIL/Java 알고리즘 문제 풀이

23.06.18

by J1-H00N 2023. 6. 18.

문자열이 들어간 배열의 유사도 확인하기

    public int solution(String[] s1, String[] s2) {
        int count = 0;
        for (int i = 0; i < s1.length; i++) {
            for (int j = 0; j < s2.length; j++) {
                if (s1[i].equals(s2[j])) {
                    count++;
                }
            }
        }
        return count;
    }

시간복잡도가 O(n^2)인 점만 빼면 깔끔하게 푼 듯하다.

 

숫자 찾기

public int solution(int num, int k) {
        int lenOfNum = String.valueOf(num).length();
        for (int i = 0; i < lenOfNum ; i++) {
            int digit = (int)((num%(Math.pow(10, i+1))/Math.pow(10,i)));
            if (digit == k) {
                return lenOfNum-i;
            }
        }
        return -1;
    }

문제는 앞에서부터 조회해서 숫자가 중복되더라도 가장 앞에 있는 숫자를 기준으로 하는데, 위 코드는 뒤에서부터 조회하므로 틀린 대답이다. 이 점을 수정해야 한다.

    public int solution(int num, int k) {
        int index = -1;
        int lenOfNum = String.valueOf(num).length();
        for (int i = 0; i < lenOfNum ; i++) {
            int digit = (int)((num%(Math.pow(10, i+1))/Math.pow(10,i)));
            if (digit == k) {
                index = lenOfNum-i;
            }
        }
        return index;
    }

앞에서부터 조회하게 바꾸기에는 코드를 다 갈아엎어야 할 것 같아서 index변수를 -1로 초기화 해놓고, 반복문 내에서 숫자의 위치를 초기화를 하도록 수정했다.

그리고 다른 풀이를 보려고 했는데 맨 위에 너무나도 간결하고 깔끔하며 창의적인 풀이가 있어 아래 참조한다.

더보기
class Solution {
    public int solution(int num, int k) {
        return ("-" + num).indexOf(String.valueOf(k));
    }
}

 

문자열 소문자로 변환하고 오름차순으로 배열하기

    public String solution(String my_string) {
        String low = my_string.toLowerCase();
        char[] sort = low.toCharArray();

        int length = sort.length;

        for (int i = 0; i < length - 1; i++) {
            for (int j = 0; j < length - i - 1; j++) {
                if (sort[j] > sort[j + 1]) {
                    char temp = sort[j];
                    sort[j] = sort[j + 1];
                    sort[j + 1] = temp;
                }
            }
        }

        String answer = new String(sort);
        return answer;
    }

sort를 쓰고 싶은 마음이 굴뚝같았지만 sort를 쓰면 너무 간단한 무제가 되어버리기에 sort를 나름대로 구현해 봤다.

'TIL > Java 알고리즘 문제 풀이' 카테고리의 다른 글

23.06.24  (0) 2023.06.24
23.06.23  (0) 2023.06.23
23.06.16  (0) 2023.06.16
23.06.11  (0) 2023.06.11
23.06.07  (0) 2023.06.07