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 | 31 |
Tags
- dfs
- 주니어
- 프로그래머스
- 백엔드
- 인텔리제이
- Linux
- IntelliJ
- 이직
- HTTP
- 명령어
- 구현
- bfs
- 구름LEVEL
- spring
- 스프링 부트
- 문자열
- 자료구조
- 배열
- 코딩테스트
- 스타트업
- 해시맵
- 도커
- 해결
- 스프링
- Java
- 개발자
- HashMap
- spring boot
- docker
- 스프링부트
Archives
- Today
- Total
마이의 개발 블로그
[프로그래머스] 둘만의 암호 (Java) 본문
반응형
새로 생긴 1단계 문제. 제시된 방식대로 구현하여 해결했으나 내 코드의 디테일이 아쉬웠다.
- 제시된 문자열 s를 char 배열로 변환함
- 배열 arr을 탐색하며 한 글자(arr[i])씩 조건에 맞게 증가시킴
- 먼저 1을 증가시키고(처음에 주어진 문자는 skip과 겹치지 않음), z를 넘어가는 경우 a로 변환
- 문자가 skip 문자열에 포함된다면 계속 증가, z를 넘어가는 경우 a로 변환
- 배열을 String으로 변환 후 반환
Note
- 로직 자체는 문제가 없으나 다른 사람이 제출한 내용을 보고나서 좀 더 깔끔하게 풀 수 있었다는 걸 알았다. while문을 잘 활용했더라면 z를 넘어갈 때 변환하는 로직 한 번으로 줄일 수 있었고, for문 하나를 더 줄일 수도 있었다 (실제 연산 횟수에는 차이가 없음).
class Solution {
public String solution(String s, String skip, int index) {
char[] arr = s.toCharArray();
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < index; j++){
arr[i] += 1;
if(arr[i] > 'z'){
arr[i] = (char)(arr[i] - 26);
}
while(skip.contains(Character.toString(arr[i]))){
arr[i] += 1;
if(arr[i] > 'z'){
arr[i] = (char)(arr[i] - 26);
}
}
}
}
return new String(arr);
}
}
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 소수 찾기 (Java) (0) | 2023.02.10 |
---|---|
[프로그래머스] 가장 큰 수 (Java) (0) | 2023.02.08 |
[프로그래머스] 할인 행사 (Java) (0) | 2023.02.04 |
[프로그래머스] 더 맵게 (Java) (0) | 2023.02.04 |
[프로그래머스] 스킬트리 (Java) (0) | 2023.02.02 |
Comments