[프로그래머스/Java] 가운데 글자 가져오기
문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
제한사항
- s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
s | return |
"abcde" | "c" |
"qwer" | "we" |
풀이 코드
방법 1
class Solution {
public String solution(String s) {
String answer = "";
// 문자열의 길이가 짝수와 홀수인 경우 구분
if (s.length()%2 == 0) {
answer = s.substring(s.length()/2-1, s.length()/2+1);
} else {
answer = s.substring(s.length()/2, s.length()/2+1);
}
return answer;
}
}
문자열 추출을 위해 .substring( )이라는 함수를 사용했고 int 값은 소수점 아래를 버리므로 만약 s 문자열의 길이가 5인 경우 s.length( )/2의 실제 값은 2.5지만, 2로 생각하면 된다.
방법 2
class Solution {
public String solution(String s) {
String answer = "";
int s_len = s.length();
int num = s_len/2;
if(s_len % 2 != 0){
answer = String.valueOf(s.charAt(num));
}else{
answer = s.substring(num-1,num+1);
}
return answer;
}
}
if (s_len % 2 !=0) // s_len 의 나머지가 0 이 아니라면(홀수라면) {
answer = String.valueOf(s.charAt(num));
}
이 방법은 String의 개념을 좀 더 공부를 해야 완전히 이해할 수 있을 것 같다!!
문자열을 추출하는 함수에는 다양한 종류가 있다.
IndexOf(String a) = a 의 문자의 위치 값의 숫자를 얻는다.
lastindexOf(String a) = a 문자를 뒤에서부터 찾아 위치 값 숫자를 얻는다.
substring(a, b) = a 부터 b 전까지의 위치의 문자열을 가져온다. (a 이상 b 미만의 index 값!!)
ex) "123456".subString(2,4) 👉 34 (2에 해당하는 index 값은 3이고, 4에 해당하는 index 값은 5이므로 34 출력)
String substring(int index) = 문자열 index 위치부터 끝까지의 문자열 모두를 가져온다.
ex) "개미처럼 열심히".substring(4) 👉 열심히
String substring(int a, int b) = 현재 문자열 객체에서 a 부터 b 직전까지 문자열
Char charAt(int inex) = String 문자열에서 index 번째 문자 값 한 개를 가져온다.
int indexOf(String str) = 문자열 str 을 찾아서 존재하면 첫째 문자 위치 값을 반환, 없으면 -1을 반환한다.
1. 해당 문자열이 있는 지 비교
if(str.indexOf(".") >=0) {
// . 이라는 값이 있다면
} else {
// . 이라는 값이 없다면
}
2. 문자열 수
len = str.length(); //str의 글자 길이
3. 부분 문자열 자르기
str = str.substring(3,7) + "9"; // str 3~7까지 자르고 뒤에 9를 붙인다.
4. 문자열 대체
str = StringMgr.replace(str, "\"","'"); // " ' " 로 변경
5. String(문자열)을 integer(숫자열)로 형 변환
int a = Integer.parasInt("123"); //Integer 과 parasInt 의 i 는 대문자 I 임!!