Problem 💻
영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,
특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.
Solution 💡
public class INF0105 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
INF0105 inf = new INF0105();
System.out.println(inf.solution(s));
}
public String solution(String s) {
String answer = "";
char[] c = s.toCharArray();
int lt = 0, rt = s.length() - 1; // 1
while(lt < rt) { // 2
if(!Character.isAlphabetic(c[lt])) { // 3
lt++; // 3
}else if(!Character.isAlphabetic(c[rt])) { // 4
rt--; // 4
}else {
char temp = c[lt]; // 5
c[lt] = c[rt];
c[rt] = temp;
lt++;
rt--;
}
}
answer = String.valueOf(c);
return answer;
}
}
풀이
단어 뒤집기 문제와 비슷하게 구현하면 된다.
- 배열의 처음과 끝 인덱스를 각 변수로 선언한다.
- 끝에서 부터 오는 변수가 클때까지 while문을 돈다. ex) 1-8 > 2-7 > 3-6 > 4-5 이렇게 돌기 때문에 5-4가 되는 순간 종료
- lt가 특수문자일 경우 그냥 넘긴다(lt를 증가한다.)
- rt가 특수문자일 경우 그냥 넘긴다(rt를 증가한다.)
- 둘 다 알파벳일 경우 스왑한다.
인프런 - 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 강의에 나오는 알고리즘 문제입니다.
'💡 Algorithm > 인프런' 카테고리의 다른 글
[Java] 멘토링 - Array(1, 2차원 배열) (0) | 2024.11.14 |
---|---|
[Java] 두 배열 합치기 - Two-Pointers Algorithm (0) | 2023.10.28 |
[Java] 등수구하기 - Array(1, 2차원 배열) (0) | 2023.10.24 |
[JAVA] 임시반장 정하기 - Array(1, 2차원 배열) (0) | 2023.10.23 |
[JAVA] 봉우리 - Array(1, 2차원 배열) (0) | 2023.10.22 |
[JAVA] 단어 뒤집기 - String(문자열) (0) | 2023.10.20 |