설명
영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,
특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.
입력
첫 줄에 길이가 100을 넘지 않는 문자열이 주어집니다.
출력
첫 줄에 알파벳만 뒤집힌 문자열을 출력합니다.
![](https://blog.kakaocdn.net/dn/b0RhUl/btrB6QOwzeM/RmX33sU8bF3RFo9k343MxK/img.png)
해설
1) char[] s = str.toCharArray();
string 문자열을 toCharArray() 메소드 이용하여 배열로 바꿔준다.
![](https://blog.kakaocdn.net/dn/bC2EpH/btrB67WMb3l/yXkg8bqK9vKSghBHriuyo1/img.png)
2) Character.isAlphabetic() : 알파벳이나 한글이면 true
![](https://blog.kakaocdn.net/dn/bGDpIg/btrCbowe3SM/G6ZYMCYNCIuKtV5IG0dTq0/img.png)
3) 두 변수의 값 교환
![](https://blog.kakaocdn.net/dn/Aev8A/btrB4PoXW3S/6vKxcA78Qev5X77rW4NPh1/img.png)
풀이
import java.util.Scanner;
class Main {
public String solution(String str) {
String answer = "";
//string기반으로 문자배열 생성
char[] s = str.toCharArray();
//배열s의 첫번째 lt, 마지막 rt
int lt = 0, rt = str.length()-1;
while(lt < rt) {
//알파벳이 아닐때, lt 1증가
if(!Character.isAlphabetic(s[lt])) lt++;
//알파벳이 아닐때, rt 1감소
else if(!Character.isAlphabetic(s[rt])) rt--;
else {
char tmp= s[lt];
s[lt] = s[rt];
s[rt] = tmp;
lt++;
rt--;
}
answer=String.valueOf(s);
}
return answer;
}
public static void main(String[] args){
Main t = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(t.solution(str));
}
}
'코딩테스트 > basic' 카테고리의 다른 글
[JAVA]String07. 회문 문자열 (0) | 2022.05.17 |
---|---|
[JAVA]String06.중복 문자 제거 (0) | 2022.05.17 |
[ JAVA]String04.단어 뒤집기 (0) | 2022.05.15 |
[JAVA]String03.문장 속 단어 (0) | 2022.05.15 |
[ JAVA]String02.대소문자 변환 (0) | 2022.05.15 |