
👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
문제 해결고민
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() : 숫자 확인
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Aʟɢᴏʀɪᴛʜᴍ' 카테고리의 다른 글
Algorithm - 회문 문자열 (0) | 2023.10.18 |
---|---|
Algorithm - 중복문자제거 (1) | 2023.10.10 |
Algorithm - 단어 뒤집기 (1) | 2023.09.24 |
Algorithm - 가장 긴 단어 찾기 (1) | 2023.09.21 |
Algorithm - 대소문자 변환 (0) | 2023.09.18 |

👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
문제 해결고민
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() : 숫자 확인
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Aʟɢᴏʀɪᴛʜᴍ' 카테고리의 다른 글
Algorithm - 회문 문자열 (0) | 2023.10.18 |
---|---|
Algorithm - 중복문자제거 (1) | 2023.10.10 |
Algorithm - 단어 뒤집기 (1) | 2023.09.24 |
Algorithm - 가장 긴 단어 찾기 (1) | 2023.09.21 |
Algorithm - 대소문자 변환 (0) | 2023.09.18 |