1. 문제
영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고, 특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력.
2. 예시
a!#$p#@pl!@e
e!#$l#@pp!@a
3. 코드
이전 글에서는 그냥 문자뒤집기였다면 이번엔 특정문자 뒤집기다.
단어 뒤집기에서 이해 못 했던 방식을 이해하는데 도움이 됐다.
이전 글 - https://connect00t.tistory.com/11
[Algorithm] 단어 뒤집기
1. 문제 N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램 작성 첫 줄에 자연수 N(3 re 예시 단어 하나를 예를 들어보자. apple 뒤집은 단어는 elppa가 리턴돼야 한다. ch.length -> 배열로 나눈
connect00t.tistory.com
import java.util.Scanner;
public class Main {
public String solution(String str) {
char[] ch = str.toCharArray();
int lt = 0, rt = str.length()-1;
while(lt<rt){
if(!Character.isAlphabetic(ch[lt])){
lt ++;
}else if(!Character.isAlphabetic(ch[rt])){
rt --;
}else{
char tmp = ch[lt];
ch[lt]=ch[rt];
ch[rt]=tmp;
lt++;
rt--;
}
}
String result = String.valueOf(ch);
return result;
}
public static void main(String[] args) {
Main case5 = new Main();
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(case5.solution(str));
}
}
- 입력한 문자는 char형식의 배열로 만들어 저장한다.
- int형으로 최소인덱스(lt)와 최대 인덱스(rt)를 저장한다.
- while문으로 lt <rt의 경우가 true일 경우 if문 실행
- isAlphabetic() 메서드를 사용해 알파벳 유무를 파악한 후, 알파벳이 아니면 다음 문자열 확인
- lt와 rt를 거쳐도 알파벳일 경우 char형식으로 변수를 하나 만들어 저장한다.
- while문이 false가 되면 빠져나온다.
- 결괏값은 String으로 반환
4. 마무리
어렵다.. 너무 어려워.. 이런 기초도 너무 어려워...
ㅠㅠ
[isAlphabetic()]
1.Character메서드로 char형식의 값이 문자인지 아닌지 판별
'알고리즘(Algorithm)' 카테고리의 다른 글
[Algorithm] 회문 문자열 (0) | 2023.04.03 |
---|---|
[Algorithm] 중복문자제거 (0) | 2023.03.24 |
[Algorithm] 단어 뒤집기 (0) | 2023.03.13 |
[Algorithm] 문장 속 단어 (0) | 2023.03.10 |
[Algorithm] 대소문자 변환하기 (0) | 2023.03.07 |