본문 바로가기
코딩연습

[코딩연습] 문자열 번갈아 출력하기 (구름 - Level 3) StringBuffer

by 마진 2021. 5. 21.

 

 

풀이과정

1. 입력받은 문자열을 조작하기 위해서 입력문자열에 대한 StringBuffer의 인스턴스 생성 (초기문자열이라 명명)

 

2. 출력결과는 초기문자열을 기준으로 앞글자와 뒷글자를 차례대로 출력하는 것입니다.

 3. 문자열의 양끝에서 한글자씩 안쪽으로 들어가며 출력하는 것보다 양끝만을 출력 하는 것이 더 쉽기 때문에

    출력된 문자는 제거합니다. 

 

  예)    문자열            출력

         abcdef    >>    af

         bcde      >>    afbe

         cd         >>    afbecd

   

   > 위 작업은 기존 문자열에 문자가 없을 때까지 지속합니다. 

 

 4. 문자의 갯수가 홀수일 경우 앞글자를 삭제한 뒤 삭제할 뒷글자가 없기 때문에 앞글자를 삭제한 후 문자가 없을 시 반복을 끝낼 수 있도록 처리합니다.

 


- 저장한 문자열을 수정할 수 없는 String 클래스와 달리 메소드를 통해 문자열을 수정할 수 있는 StringBuffer의 특징이 문제해결의 가장 큰 포인트가 되었습니다.

 

- 반복횟수가 정해져 있지만 조건에 따라 while문이 좀더 효율적이라는 것을 알 수 있었습니다.

 


StringBuffer

 - (instance) deleteCharAt(int index) :     저장된 문자열(인스턴스의 문자열)에서 원하는 위치(index)의 문자를 제거

                                                            > 저장된 문자열의 직접적인 변경 가능 

 

 

 

<풀이 코드>

/*
 * 클래스 이름, main() 메소드 부분 생략
 * ...
 */

	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
        String input = br.readLine();
	StringBuffer strBuffer = new StringBuffer(input);
		
		
        while(strBuffer.length() != 0) {
        	System.out.print(strBuffer.charAt(0));
		strBuffer.deleteCharAt(0);            
			
            	if(strBuffer.length() == 0) break;
			
            	System.out.print(strBuffer.charAt(strBuffer.length()-1));
		strBuffer.deleteCharAt(strBuffer.length()-1);
	}