728x90
⬛ 프로그래머스 | LV.1 둘만의 암호 - 문자열 구현 문풀 (Java)
https://school.programmers.co.kr/learn/courses/30/lessons/155652
💚문제 접근 방식
규칙 대로 구현하면 되는 문제였다.
- s의 각 알파벳 idx 만큼 뒤의 알파벳으로 바꿀 것
- idx만큼 뒤의 알파벳이 z를 넘길 경우 (순환구조처럼) a로 돌아가서 철
- skip에 있는 알파벳은 건너뛸 것
[문제 풀이]
- String alpha 에 a~z까지 문자 중 skip 에 포함되는 문자는 건너뛰고 담아준다.
- for문으로 바꿔야 하는 대상 문자열 s를 순회하면서 현재 지칭 중인 idx를 찾고
- 바꿔줘야 할 idx인 cur에 담기 위해 (idx+index) % alpha 로 나눠줬다.
→ 그렇게 되면 나머지에 담긴 값이 자동으로 a부터 찍기 마련이므로
4. 바뀐 문자 각각을 answer에 누적해서 담아주고 리턴하면 그것이 규칙대로 바뀐 문자열이 된다.
💚 제출 코드
import java.util.*;
class Solution {
public String solution(String s, String skip, int index) {
String answer = "";
String alpha = "";
//알파벳 배열 하나 생성하기
for(char k = 'a'; k<='z'; k++){
if(skip.contains(Character.toString(k))) continue;
alpha += k;
}
//만들기
for(char x : s.toCharArray()){
int idx = alpha.indexOf(x);
//순환 구조 끝단에 만나면 처음을 찍도록
int cur = (idx + index) % alpha.length();
//변환된 문자 담기
answer += alpha.charAt(cur);
}
return answer;
}
}
💚 회고
20분 정도 걸렸다. 단순하게 문자열 처리하는 구현 문제였다. 시간복잡도는 for문으로 순회하고 있는 s의 경우, 최대 50 정도이기 때문에, 처리하는데 시간이 크게 문제되지 않고 시간 내에 동작한다.
728x90
'코딩 테스트 [준비] > [문풀] 프로그래머스_문풀_조지기' 카테고리의 다른 글
프로그래머스 (카카오) | LV.3 파괴되지 않은 건물 - 누적합(😰) 문풀 (Java) (14) | 2024.03.02 |
---|---|
프로그래머스(카카오) | LV.2 주차 요금 계산 (RE) - 단순 구현 문풀 (Java) (17) | 2024.03.02 |
프로그래머스 | LV.3 110 옮기기 - 문자열 구현 & Stack 활용 문풀 (Java) (21) | 2024.02.28 |
프로그래머스(위클리) | LV.2 교점에 별 만들기 - 구현 문풀 (Java) (22) | 2024.02.28 |
프로그래머스 | LV.2 혼자 놀기의 달인 - DFS 문풀 (Java) (20) | 2024.02.28 |