본문 바로가기
Preparing Coding Test/Programmers L1

[Java] 가운데 글자 가져오기

by weero 2020. 7. 14.

문제

https://programmers.co.kr/learn/courses/30/lessons/12903

 

코딩테스트 연습 - 가운데 글자 가져오기

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret

programmers.co.kr

 

 

풀이

문자열의 개수 파악

   1) 짝수 → 가운데 두 글자

   2) 홀수 → 가운데 한 글자

 

 

참고

1. java.lang.String.charAt()      vs. subString() length

- public char charAt(int index)

- 입력받은 인자값(index)의 위치에 있는 문자를 뽑아 char형으로 return

String str = "ABCDE";

System.out.println(str.charAt(3)); //D

 

2. java.lang.String.length()      vs. length, size()

- public int length()

- String_related_Object (String, StringBuilder)

- 문자열의 길이를 return

String str="Hello World!";

Sytem.out.println(str.length()); //12

 

2-2. length

- int length

- arrays (int[], double[], String[], ...)

- 배열의 길이를 return

 

2-3. java.util.*.size()

- int size()

- Collection_Object(ArrayList, Set, Map, ...)

- 컬렉션 프레임워크 타입의 길이를 return

 

3. toString()      vs. new String()

- Object 클래스의 메소드 == 자바의 라이브러리나 유저가 만든 모든 클래스에 적용 가능

- 객체가 가지고 있는 정보나 값들을 문자열로 만들어 return

- String 클래스나 File 클래스에서는 toString()에 메소드를 재정의(Override)하여 의미있는 값을 return

      - String클래스객체.toString() : 객체가 가진 값을 String으로 return

      - File클래스객체.toString() : 객체가 가진 해당 경로값을 String으로 return

- toString() 메소드는 자동으로 호출된다

- null 값이 들어오면 Null Pointer Exception

 

3-2. Char형의 변수를 String형으로 변환 (한글자)

Character.toString(char형);

 

3-3. Char[] 캐릭터형 배열을 바로 String형으로 변환 (여러 글자)

String str = String.valueOf(char[]배열);

+ 또는 toString으로 한 글자씩 더해주는 방법이 있다

- null 값이 들어오면 null 문자열을 return

 

3-4. new String()

- new String(char[] value, int offset, int count)

- int offset : 처음 인덱스

- int count : 개수

char[] value = {'a','b','c','d'};
 
String str1 = new String(value, 2,1); //index 2부터 1개
System.out.println(str1); //c
 
String str2 = new String(value, 2,2); //index 2부터 2개
System.out.println(str2); //cd
 
String str3 = new String(value, 2,3);
System.out.println(str3); //java.lang.StringIndexOutOfBoundsException: offset 2, count 3, length 4

String str4 = new String(value);
System.out.println(str4); //abcd

 

 

 

코드

class Solution {
  public String solution(String s) {
      String answer = "";
      if(s.length()%2==0)
          answer = Character.toString(s.charAt(s.length()/2-1)) + Character.toString(s.charAt(s.length()/2));
      else
           answer = Character.toString(s.charAt(s.length()/2));
      
      return answer;
  }
}