알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄
https://school.programmers.co.kr/learn/courses/30/lessons/155652
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Think🤔
class Solution {
public String solution(String s, String skip, int index) {
String answer = "";
return answer;
}
}
s에 있는 값 "aukks" 이고
skip에 있는 값 "wbqd"
index는 5
result happy가 나와야 한다.
s에 있는 값을 각 글자에 더해주는데 skip에 있는 값이 나오면 그 값은 바로 무시해주고 다음 문자로 넘어간다.
a -> b -> c -> d -> e -> f 이렇게 하면 5번인데
a -> b -> c -> d -> e -> f -> g -> h , skip에 단어 b와 d가 있으므로 그 값은 건너뛰어준다.
u -> v -> w -> x -> y - > z -> a , 다시 a로
이런식으로 바꿔주면 됨.
class Solution {
public String solution(String s, String skip, int index) {
String answer = "";
for(int i=0; i<s.length(); i++){
char ch = s.charAt(i);
int cnt = index; // cnt에 5 들어감
while(cnt > 0){
if(skip.contains(String.valueOf(ch)) == true){
ch++;
} else{
ch++;
cnt--;
}
if(ch == '{'){
ch-=26;
}
}
answer += ch;
}
return answer;
}
}
한 2~3개 밖에 통과를 안함.
반복문 돌려서 'z'가 될 경우 ASCII 코드로는 123이니깐 그럴 경우 소문자 a로 다시가게 26을 빼줬는데 안됨.
질문하기에 반례를 참고해서 테스트 케이스에 추가
입력값 〉 "bcdefghijklmnopqrstuvwxyz", "a", 1
기댓값 〉 "cdefghijklmnopqrstuvwxyzb"
입력값 〉 "klmnopqrstuvwxyz", "abcdefghij", 20
기댓값 〉 "opqrstuvwxyzklmn"
마지막 경계값에서 z -> a로 변환하는 순간 z는 skip에 안걸려서 a로 변환시키고 끝나는데
skip을 해서 [ K ] 값이 나와야 함 [ A] 가 아닌
klmnopqrstuv[w]xyz
opqrstuvwxyz[a]lmn
opqrstuvwxyz[k]lmn
class Solution {
public String solution(String s, String skip, int index) {
String answer = "";
for(int i=0; i<s.length(); i++){
char ch = s.charAt(i);
for(int j=0; j<index; j++){
ch++;
if(ch == '{'){
ch -= 26;
}
if(skip.contains(String.valueOf(ch))){
j--;
}
}
answer += ch;
}
return answer;
}
}
처음에 하려던 j--방법을 이용해서 한다 통과
Solution✍
class Solution {
public String solution(String s, String skip, int index) {
String answer = "";
for(int i=0; i<s.length(); i++){
char ch = s.charAt(i);
for(int j=0; j<index; j++){
ch++;
if(ch == '{'){
ch -= 26;
}
if(skip.contains(String.valueOf(ch))){
j--;
}
}
answer += ch;
}
return answer;
}
}
Review🤩
경계값 테스트의 중요성을 깨달음
최소값 , 최대값 , 중간값 등의 특별한 경우 주로 테스트
'Algorithm' 카테고리의 다른 글
[프로그래머스] 달리기 경주 (0) | 2024.01.15 |
---|---|
[프로그래머스] [PCCE 기출문제] 9번 / 이웃한 칸 (1) | 2024.01.15 |
[프로그래머스] 대충 만든 자판 (0) | 2024.01.09 |
[프로그래머스] 아이스 아메리카노 (0) | 2024.01.05 |
[프로그래머스] 배열 두 배 만들기 (0) | 2024.01.05 |