둘만의 암호

문제


문제 풀이

원큐를 활용하여 문제를 풀었다. 알파벳 소문자 a ~ z 까지 입력을 하고 skip 문자들만 별도로 제거를 하였다. 거기서 원하는 문자에서 index 만큼 + 하였을 때 나오는 값을 가지고 answer에 더해주었다. 


나의 답안

public static String solution(String s, String skip, int index) {
    StringBuilder sb = new StringBuilder();
    Deque<Character> deque = new LinkedList<>();

    for (int i = 'a'; i <= 'z'; i++) {
        deque.add((char) i);
    }
    for (char c : skip.toCharArray()) {
        deque.remove(c);
    }

    for (int i = 0; i < s.length(); i++) {
        int count = index;
        boolean target = false;
        while (count != 0) {
            if (s.charAt(i) == deque.peek()) {
                target = true;
            }
            if (target) {
                deque.add(deque.poll());
                count--;
                continue;
            }
            deque.add(deque.poll());
        }
        sb.append(deque.peek());
    }

    System.out.println(deque);

    return sb.toString();
}

다른 답안

class Solution {
    public String solution(String s, String skip, int index) {
        StringBuilder answer = new StringBuilder();

        for (char letter : s.toCharArray()) {
            char temp = letter;
            int idx = 0;
            while (idx < index) {
                temp = temp == 'z' ? 'a' : (char) (temp + 1);
                if (!skip.contains(String.valueOf(temp))) {
                    idx += 1;
                }
            }
            answer.append(temp);
        }

        return answer.toString();
    }
}

'Programmers 문제풀이 > Lv.1' 카테고리의 다른 글

개인정보 수집 유효기간  (0) 2023.03.29
대충 만든 자판  (0) 2023.03.28
성격 유형 검사하기  (0) 2023.03.27
햄버거 만들기  (0) 2023.03.27
신규 아이디 추천  (0) 2023.03.24