[프로그래머스][자바(JAVA)] 가운데 글자 가져오기 -모두의개발

2022. 9. 17. 20:38알고리즘/프로그래머스

※ 요약

-  주어진 단어의 가운데 글자를 반환하는 문제이다. 단어의 길이가 홀수면 1글자 짝수라면 2글자를 반환한다

 

 

 


  • 풀이1

※ 참고

StringBuilder 사용법 https://quick-finger.tistory.com/21?category=1056247

1. 문자열을 더해주기 위해 StringBuilder를 정의해준다

2. 문자의 길이값을 leng에 담아주고 홀수 일경우 leng/2 를 sb에 담아 리턴해준다

-> s="abcde" 일경우 s의 길이값은 5

-> 5/2는 2(.5)

-> charAt(2) = "c"

 

3. 짝수일경우 i가 leng/2 -1 또는 leng /2 와 같을경우 sb에 담아 리턴해준다

-> s="qwer" 일경우 s의 길이값은 4

-> 4/2-1은1 , 4/2는 2

->charAt(1) = "w", charAt(2) = "e"

<정답코드1>

class Solution21 {
	public String solution(String s) {
		StringBuilder sb = new StringBuilder(); //1
		int leng = s.length();
		if (s.length() % 2 != 0) { // 2
			sb.append(s.charAt(leng / 2));
			return sb.toString();
		}
		for (int i = 0; i < leng; i++) { // 3
			if (i == leng / 2 - 1 || i == leng / 2) {
				sb.append(s.charAt(i));
			}
		}
		return sb.toString();

	}
}

 


  • 풀이2

※ 참고

풀이1보다 속도가 빠르다!

substring() 참고 https://quick-finger.tistory.com/34

 

1. String s 길이값만큼 leng에 정의

2. 짝수라면 substring()함수를 이용해  leng /2 -1 부터 leng/2+1 전까지 s2에 정의해준다

3. 홀수라면 leng/2 부터 leng/2 +1 전까지 s2에 정의해준다

 

<정답코드2>

class Solution21 {
	public String solution(String s) {
		
		int leng = s.length(); // 1
		String s2;
		
		if (leng % 2 == 0) { // 2
			s2 = s.substring(leng / 2 - 1, leng / 2 + 1); //  3
		} else {
			s2 = s.substring(leng / 2, leng / 2 + 1); // 4
		}
		return s2;

	}
}