[Programmers / Level1] 155652. 둘만의 암호(Java)

이하얀·2024년 8월 2일
0

🕊️ 프로그래머스

목록 보기
20/43

💡 Info




입출력 조건




입출력 예시




문제 이해


  • 주어지는 규칙에 맞게 주어진 문자열 s를 변환하면 되는 문제
    • 원래의 문자에서 index만큼 뒤에 있는 문자로 변환하기
    • 단, skip에 포함된 문자는 추가하지 않고 넘기기


알고리즘


풀이 시간 : 12분

  1. 문자열 s를 char형으로 변환
  2. index를 순회
    • 변환한 문자열 s를 하나씩 증가
    • z를 기준으로 '변환한 문자열 s - 26' 계산
  3. 정답 문자열에 하나씩 추가
import java.util.*;

class Solution {
    public String solution(String s, String skip, int index) {
        String answer = "";
        
        for(int i=0; i<s.length(); i++){
            char changeS = s.charAt(i);
            
            for(int j=0; j<index; j++){
                changeS++;
                if(changeS > 'z'){
                    //changeS = changeS - 26;
                    changeS -= 26;
                }
            }
            answer += changeS;
        }
        return answer;
    }
}


오답체크


  • 테스트 미통과 문제
    • 변환이 안되는 문제로 확인
    • 또한, skip 조건을 작성하지 않음.
//before
for(int j=0; j<index; j++){
	changeS++;
    if(changeS > 'z'){
		changeS -= 26;
   	}
}
answer += changeS;
//after
for(int j=0; j<index; j++){
	changeS++;
	if(changeS > 'z'){
    	changeS -= 26;
    }
    //skip
    if(skip.contains(String.valueOf(changeS))){
    	j--;
    }
}
answer += changeS;


최종 풀이


풀이 시간 : 16분(첫 풀이 시간 포함)

  1. 문자열 s를 char형으로 변환
  2. index를 순회
    • 변환한 문자열 s를 하나씩 증가
    • z를 기준으로 '변환한 문자열 s - 26' 계산
    • skip 조건 추가
  3. 정답 문자열에 하나씩 추가
import java.util.*;

class Solution {
    public String solution(String s, String skip, int index) {
        String answer = "";
        
        for(int i=0; i<s.length(); i++){
            char changeS = s.charAt(i);
            
            for(int j=0; j<index; j++){
                changeS++;
                if(changeS > 'z'){
                    //changeS = changeS - 26;
                    changeS -= 26;
                }
                
                //skip
                if(skip.contains(String.valueOf(changeS))){
                    j--;
                }
            }
            answer += changeS;
        }
        return answer;
    }
}


결과

profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE 개발 기록 노트☘️

0개의 댓글