👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞/⠀⠀⠀⠀ Aʟɢᴏʀɪᴛʜᴍ
Algorithm - 특정 문자 뒤집기
유리쯔의일상
2023. 9. 24. 20:20
반응형

👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
문제 해결고민
1. 아스키코드를 이용해서 특수문자랑 영어를 구별하는 게 좋을까?
2. revers를 써도 괜찮을까?
3. 아스키코드 외에 알파벳여부를 확인하는 메소드는 없을까?
4. char[] 배열로 진행 후 인덱스 맞교환은 어떻게 해야 할까
생각보다 고민을 많이 했다
사실 빨리 끝낼 줄 알았는데 너무 오래 걸렸다.
결국엔 혼자 풀지 못하여 선생님의 풀이 과정을 보고 따라 했다.
내용을 이해하고 좀 더 고민을 더 해볼걸 이라며 아쉬워했다
선생님의 풀이과정
1. 문자 배열을 만든다
2. lt와 rt를 사용한다 / Lt 시작하는 인덱스번호, rt는 끝나는 인덱스
3. lt와 rt가 모두 다 알파벳일 경우 스왑 한다
4. 스왑 후 rt와 lt는 증가
5. 그다음 인덱스에 특문이 있는 경우 스왑 없이 바로 증가
import java.util.*;
class Main {
public String solution(String str) {
String answer;
char[] substr = str.toCharArray();
int lt = 0, rt = str.length() - 1;
while (lt < rt) {
if (!Character.isAlphabetic(substr[lt])) { // 알파벳이 아닐 때
lt++;
} else if (!Character.isAlphabetic(substr[rt])) { // 알파벳이 아닐 때
rt--;
} else {
char tmp = substr[lt];
substr[lt] = substr[rt];
substr[rt] = tmp;
lt++;
rt--;
}
}
answer = String.valueOf(substr);
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
String str = in.next();
System.out.println(T.solution(str));
}
}
// #a!bGE*@sT
. isAlphabetic(매개변수)
매개변수의 값이 문자인지 여부를 판단하여 True , False를 리턴한다.
문자여부 확인 시 예제
Character.isAlphabetic() : 알파벳 여부확인
Character.isUpperCase() : 대문자 확인
Character.isLowerCase() : 소문자 확인
Character.isDigit() : 숫자 확인
반응형