내일배움캠프 26일차 TIL _ 6주 2일차

2024. 5. 21. 22:22TIL Java

 

  • 오늘 있었던 일
    • 개인과제
    • 알고리즘

SPRIONG

  • 스프링 정리

 

알고리즘 문제 풀기

     ● 둘만의 암호

더보기

● 둘만의 암호 //링크

class Solution {
    public String solution(String s, String skip, int index) {
         int one =0;
        String two = "";
        for (String sc : s.split("")) {
            skip.indexOf( sc );
            one = sc.charAt(0);

            for (int i = 0; i < index; i++) {
                one++;
                if (one > 122) {
                    one = (one - 122) +96;
                }
                char c = (char) one;
                if (skip.indexOf( c ) != -1) {
                    i--;
                }
            }
            if (one > 122) {
                one = (one - 122) +96;
            }

            two += String.valueOf( (char) one );

        }


        return two;
    }
}
  • 태스트 문은 통과했는데 왜 정답문에선 하나도 맞지 않을까?
    • one이 122을 넘을 경우 97으로 초기화를 먼저 해줬어야했었다
      • for문의 순서를 잘못했다.
      • for (int i = 0; i < index; i++) {
                        char c = (char) one;
                        if (skip.indexOf( c ) != -1) {
                            i--;
                        }
                        if (one > 122) {
                            one = (one - 122) +96;
                        }
        				one++;
                        
                    }
      • 이게 맞는문
      • for (int i = 0; i < index; i++) {
                        one++;
                        if (one > 122) {
                            one = (one - 122) +96;
                        }
                        char c = (char) one;
                        if (skip.indexOf( c ) != -1) {
                            i--;
                        }
                    }

  • 밑은 다른 사람의 풀이
  • 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();
        }
    }
  • 중간 for문에 i값을 줄인 나와 다르게 if (!skip.contains(String.valueOf(temp))) 으로 스킵을 넘겼다.

 

 

 

  


당일 회고

  • 스프링... 14시간?!