반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 문자열
- Java
- BOJ
- SW역량테스트
- Lv.1
- baekjoon
- algorithm
- ProblemSolving
- BFS
- Lv.2
- dynamic programming
- programmers
- dfs
- 백준
- PS
- Permutation
- backtracking
- recursive
- 아기상어
Archives
- Today
- Total
berry
[Programmers] 둘만의 암호(Lv.1) - Java 본문
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/155652
[풀이]
조건 1. 문자열 s, skip, 정수 index가 주어진다.
조건 2. 문자열 s의 각 자리 알파벳을 index만큼 건너뛴 문자열을 리턴한다.
조건 3. 만약 s의 각 자리 알파벳이 skip에 포함되면 그 경우는 제외하고 건너뛴다.
조건 4. 알파벳이 'z'를 넘어가면 'a'로 돌아가게 해준다.
s의 길이만큼 반복문을 돌리면서 c라는 char부터 체크한다.
count 는 알파벳 각각이 index만큼 건너뛰었는지 체크하는 변수
while문에서 ++c >> 다음 알파벳
'z'를 넘어가면 아스키코드로 볼때 'a'~'z' (97~122)로 표현할 수 있는데, 26만큼을 빼주면 해결가능하다.
contains함수를 써서 skip에 포함되면 count를 증가시키지 않고 포함되지않는다면 증가시켜주면된다.
[소스코드]
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 c = s.charAt(i);
int count = 1;
while(count <= index){
++c;
if(c > 'z')
c -= 26;
if(skip.contains(c+""))
continue;
else
count++;
}
answer += c;
}
return answer;
}
}
반응형
'Problem Solving > Programmers' 카테고리의 다른 글
[Programmers] 개인정보수집유효기간(Lv.1) - Java (0) | 2023.03.08 |
---|---|
[Programmers] 바탕화면 정리(Lv.1) - Java (0) | 2023.03.04 |
[Programmers] 무인도 여행(Lv.2) - Java (0) | 2023.03.02 |
[Programmers] 카드 뭉치(Lv.1) - Java (0) | 2023.03.01 |
[Programmers] 이모티콘 할인행사(Lv.2) - Java (0) | 2023.02.27 |