스터디사이트 : https://www.hackerrank.com



JAVA Basic : 짝수/홀수 자리 글자 추출하여 나열시키기



입력받은, 아니면 입력된 String 값을 글자 하나하나 분리해서 출력 할 때에는,

1) java.lang.String.toCharArray() 메소드를 이용해서 char[] 변수에 집어넣고,

2) 반복문으로 char[ i ] 를 차례대로 출력 시키면 된다.



예제코드

String myString = "This is String example.";

char[] myCharArray = myString.toCharArray();

for(int i = 0; i < myString.length(); i++){

    // Print each sequential character on the same line

    System.out.print(myCharArray[i]); 

}

※ 결과  

T

h

i

s

 

i

s

 

S

t

r

i

n

g

 

e

x

a

m

p

l

e

.



※ 코딩실습 - 조건

    • N라인을 받는다.
    • for문으로 입력값 N개를 배열에 저장
    • 입력받은 String값의 짝수/홀수 자리의 값을 두 공간으로 나눠서 출력. 공간을 나누는 표시는 공백으로 한다.
    • 짝수는 for문 안에서 처리가능하나, 홀수는 나중에 처리해아 하므로 저장 해 놓을 변수 필요.


입력

2

Hacker

Rank


출력

Hce akr

Rn ak


코딩 & 결과

코딩이 좀 지저분한 것 같다.. 

본인이 아래 코딩 했을 때 헷갈렸던 점은, 

    • for문 선언하는 괄호 안에서 변수 선언할 때,
      i 나 j 를 처음 선언하는 변수임에도 불구하고 i=0 , j=0 으로 써버려서 어이없는 컴파일 오류가 생겼었다..
      그런데 바보같이 왜 오류인지 잠시 멍했었던.. ㅋ
    • String odd
      i 변수의 for문이 한바퀴 돌고 나서 두바퀴째에 들어서서는
      두번째 라인에 있는 String이 새로 등장하므로, 홀수자리 값이 저장되어있는 odd의 내용을 비워줘야 한다.
      그런데 그거를 비우지 못해서 기존꺼랑 같이 겹쳤던 경험이 있다..

public static void main(String[] args) {

        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */

        Scanner scan = new Scanner(System.in);

        ArrayList<String> s_storage = new ArrayList<String>();

        int n_line = scan.nextInt();

        String odd="";      /* s_storage String값의 자릿수가 홀수이면 이곳에 저장한다. */


        for(int i=0; i<n_line; i++){

            s_storage.add(scan.next());     /* next() : Scanner에서 문자를 추출해오는 메소드 */

            odd="";     /* 다음 라인에 있는 String값의 홀수값을 저장하기 위해 내용을 비움. */

            char[] array_s =  s_storage.get(i).toCharArray();  

  /* 입력된 값이 저장되어 있는 s_storage String값을 한글자씩 끊어서 char[] 배열에 저장*/


            for(int j=0; j<s_storage.get(i).length(); j++){   

              /* s_storage.get(i).length() : 입력된 값이 저장되어 있는 s_storage의 i번째 자리 String의 글자수를 계산하는 메소드 */

                if( (j % 2)==0 ){   //만약 s_storage String값의 자릿수가 짝수이면, 콘솔에 곧바로 출력

                    System.out.print(array_s[j]);

                }else if( (j % 2)==1 ){  //만약 s_storage String값의 자릿수가 홀수이면, 홀수자리수의 값 저장하는 변수에 저장.

                    odd = odd + array_s[j];

                }

            } /* end for j*/

            

            System.out.print(" " + odd);

            System.out.println();

        }/* end for i*/       

    } /* end main() */

결과 : 

Hce akr

Rn ak


+ Recent posts