본문 바로가기

Coding Test

(CodingTest) : 24일차 암호 해독

 

 

 

☑️ 내가 쓴 답 (정답)

✔ 체크 할 부분

   1) 배열의 길이를 고려해서, 예시로 데이터를 넣어보면서 실제로 해당 값이 출력되는지 계속 테스트 해보기

// cypher에서 code의 배수의 값만 answer에 추가를 해서, 결과를 반환해보기
// 배수의 값을 answer = 값 + ""; 형태로 진행해보기

class Solution {
    public String solution(String cipher, int code) {
        String answer = "";
        String[] toArray = cipher.split(""); // cipher를 ""로 나누기, []배열 안에 cypher각각의 값이 포함
        int c = 0;
        
        // c의 값은 기존 c * code형태로 되어야 함
        // cipher을 split("")으로 나눠서, cipher[c]위치의 값을 answer에 추가해보기
        
        // String cipher = "eaepepelee"로 예시 테스트
        // code = 2로 예시
        for(int i = 1; i <= cipher.length()/code; i++){
            c = code * i; // 2*1, 2*2, 2*3...
            
            String str = toArray[c-1];
            // code가 2라면, cipher[2]의 값을 str에 담기
            answer += str; // answer에 str의 값을 추가
        }
        return answer;
    }
}

 

☑️ 다른 사람의 풀이

✔ 체크 할 부분

    1) for문에서 i <= cipher.length(); 부분 

         < 가 아니라, <=를 해줘야 됨

    2) substring(a,b)는 a부터 b의 앞까지의 값이라는 의미

        substring의 인덱스는 0부터 시작

// 다른 사람의 풀이 참고해보기
// substring을 사용하여, 해당 값들을 answer에 추가
// for문에서는 i = code로 시작하여, i = i + code; 형식으로 증가
// i = 2 + 2;
// i = 4 + 2;
// i = 6 + 2;

// i = 4 + 4 = 8
// i = 8 + 4 = 12

class Solution {
    public String solution(String cipher, int code) {
        String answer = "";
        
        for(int i = code; i <= cipher.length(); i = i + code){
            
            answer = answer + cipher.substring(i-1, i); // substring에서 인덱스는 0부터 시작
        }
        
        return answer;
    }
}