특정문자 뒤집기 (직접뒤집기 활용)

Seungmin Lim·2022년 2월 4일
0

코딩문제연습

목록 보기
5/63

문제

나의풀이

import java.util.*;

class Main {
	public String solution(String str) {
		String answer = "";
		char[] a = str.toCharArray();
		int lt = 0 , rt = str.length()-1;
		while(lt<rt) {
			//a[lt]가 알파벳이 아닐시.
			if(!Character.isAlphabetic(a[lt])) lt++;
			//a[rt]가 알파벳이 아닐시.
			else if(!Character.isAlphabetic(a[rt])) rt--;
			//a[lt],a[rt]가 알파벳일시.
			else {
				char tmp = a[lt];
				a[lt] = a[rt];
				a[rt] = tmp;
				lt++;
				rt--;
			}
			
		}
		answer = String.valueOf(a);
		return answer;
    }
	
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.println(T.solution(str));
	}
	
}

풀이법

toCharArray 메소드를 통해 단어를 배열단위로 나누고, lt,rt를 통해 while문을 돌려준다.

만약, lt가 알파벳이 아닌경우 = 특수문자를 만난경우. 바꾸지 않고 lt를 이동.

만약, rt가 알파벳이 아닌경우 = 특수문자를 만난경우. 바꾸지 않고 rt를 이동.

그 외, lt, rt가 모두 알파벳인 경우. 배열[lt],배열[rt]의 자리를 바꾸고,
lt++, rt-- (lt,rt 이동)

마지막으로, String.valueOf(배열)을 통해 answer에 담는다.

핵심키워드

toCharArray(), String.valueOf() 복습!
lt와 rt를 활용한 조건이 있는 문자를 뒤집기 이해!

0개의 댓글