봄디의 개발일지
[알고리즘] 특정 문자 뒤집기 - 문자열, 투포인터 [JAVA/자바] 본문
➡ 비슷한 문제 보러가기
2024.10.27 - [백준] - [백준 / 배열] 3273번 : 두 수의 합 - (JAVA/자바)
📝 문제
💭풀이 방법
이 문제는 투 포인터 를 이용해서 푸는 문제입니다.
문자열의 맨 앞과 맨 뒤를 가리키는 정수를 하나 선언하여 특정 조건을 만족시키면 앞으로 혹은 뒤로 이동하며 문제를 푸는 방식입니다.
입력이 a#b!GE*T@S 가 char[] arr 에 들어와있다고 가정했을 때,
start 는 0번을 가리키고, end 는 문자열의 제일 끝인 9번 인덱스를 가리키게 둡니다.
영어 알파벳만 뒤집기 때문에 인덱스가 가리키는 위치에 있는 값이 알파벳인지를 확인하고,
알파벳이 아니라면 start 위치는 한 칸 뒤로 이동, end 는 한 칸 앞으로 이동하며 알파벳인지를 확인합니다.
영어 알파벳이라면 두 문자를 switch 해주면 됩니다.
😊소스코드
import java.util.Scanner;
public class 특정_문자_뒤집기 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(solution(str));
}
private static String solution(String str) {
char[] arr = str.toCharArray();
int start = 0;
int end = arr.length -1;
char tmp;
while (start < end) {
if (!Character.isAlphabetic(arr[start])) {
start++;
}
else if (!Character.isAlphabetic(arr[end])) {
end--;
}
else {
tmp = arr[start];
arr[start] = arr[end];
arr[end] = tmp;
start++;
end--;
}
}
return String.valueOf(arr);
}
}