코테/프로그래머스
[프로그래머스/Lv. 1] 둘만의 암호
imname1am
2023. 4. 4. 12:23
반응형
🔺 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔺 코드
[Java] 둘만의 암호 - Lv1 프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/155652# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞
mag1c.tistory.com
class Solution {
public String solution(String s, String skip, int index) {
String answer = "";
// 문자열을 char 배열로 변환
char[] chArr = s.toCharArray();
// 문자열의 각 문자에 대해 index만큼 적용
for(int i = 0 ; i < chArr.length ; i++) {
// index만큼 적용하는 반복문
for(int j = 0 ; j < index ; j++) {
// 각 문자에 index만큼 더함
chArr[i]++;
// 'z'를 넘어갈 경우 알파벳 순환
if(chArr[i] > 'z') {
chArr[i] -= 26;
}
// skip 문자열에 해당 문자가 있을 경우 알파벳 순환
while(skip.contains(String.valueOf(chArr[i]))) {
chArr[i]++;
if(chArr[i] > 'z') {
chArr[i] -= 26;
}
}
}
}
// char 배열을 다시 문자열로 변환하여 리턴
return String.valueOf(chArr);
}
}
- 먼저 문자열 s를 char 배열로 변환한다.
- 각 문자에 대해 index만큼 적용하는 반복문을 수행한다.
- 각 문자에 index를 더한다.
- 만약 문자가 'z'를 넘어갈 경우, 알파벳을 순환시킨다. (예 : 'z' + 1 = 'a')
- 만약 skip 문자열에 해당하는 문자일 경우, 알파벳을 순환시킨다. 이를 위해서 while 반복문을 사용한다.
- 마지막으로 char 배열을 다시 문자열로 변환하여 리턴한다.
5번째 - while문 쓸 생각을 못 했다.ㅠ
🔺 다른 풀이들
- 풀이1)
프로그래머스 연습문제 둘만의 암호 [JAVA] - 23년 2월 16일
velog.io
Set이랑 StringBuilder를 사용하셨다.
- 풀이2)
class Solution {
public String solution(String s, String skip, int index) {
StringBuilder answer = new StringBuilder();
for (char letter : s.toCharArray()) {
char temp = letter;
int idx = 0;
while (idx < index) {
temp = temp == 'z' ? 'a' : (char) (temp + 1);
if (!skip.contains(String.valueOf(temp))) {
idx += 1;
}
}
answer.append(temp);
}
return answer.toString();
}
}
깔끔 그 자체...
- 풀이3)
class Solution {
public String solution(String s, String skip, int index) {
String answer = "";
for (char c : s.toCharArray()) {
for (int i = index; i > 0; i--) {
c++;
if (c > 122) c -= 26;
while (skip.contains(String.valueOf(c))) {
c++;
if (c > 122) c -= 26;
}
}
answer += c;
}
return answer;
}
}
내 기준 제일 깔끔!!
(참고)
✔ 문자열 포함 여부 확인 : contains
[JAVA] 자바_contains (문자열 포함 여부 확인)
- 문자열 포함 여부 확인하기 (ft. contains) - contains() - boolean contains(CharSequence s) - contains() 함수는 대상 문자열에 특정 문자열이 포함되어 있는지 확인하는 함수이다. - 대/소문자를 구분한다. 예제 1
mine-it-record.tistory.com
반응형