문제 설명
단어 s 가운데 글자를 반환하는 함수 solution을 만들어 보세요 단어의 길이가 짝수라면 가운데 두글자만
반환하면 됩니다.
제한 사항
- arr의 길이 1 이상, 100 이하인 스트링입니다.
입출력 예
s | return |
"abcde" | "c" |
"qwer" | "we" |
풀이
- 문자열의 길이가 짝수인지 홀수인지 판단한다.
- 짝수이면 가운데 두 글자를 반환하고, 홀수이면 가운데 한 글자만 반환한다.
function solution(s) {
let answer = '';
if (s.length % 2 == 0) {//짝수일 경우
answer = s[s.length / 2 - 1] + s[s.length / 2]
} else {
answer = s[Math.floor(s.length/2)]; // 홀수의 경우, 반내림 하기
}
return answer
}
- 짝수라면, 문자열의 길이를 2로 나누어 해당 인덱스의 이전 값과 해당 인덱스 값을 출력
- 문자열의 길이가 홀수일 때 2로 나누면 나눈 값은 소숫점이 될 것이다. 그러므로 나눈 값에 Math.floor()메서드를
사용해 반내림 해야한다. 반올림이 아닌 반내림을 하는 이유는 인덱스는 0부터 시작하기 때문이다.
예제 1번을 보면 "abcde" 문자열의 길이는 5이고, 출력값은 "c"이고 인덱스 값을 2이다.
즉, 5 / 2 = 2.5인데, 인덱스 값을 구하려면 반내림 해야함
멘토님의 풀이법
function solution(s) {
// 가운데 함수 const 선언
// 소수점이 없는 정수로 변환
const center = Math.floor(s.length / 2);
// Math로 내림 하면서 소수점을 제거한다.
// 문자열 길이에 나누기2
let answer = s[center];
// 짝수 인지 확인
if ( s.length % 2 === 0) {
// 짝수일 경우 앞에있는 index까지 붙여서 return
// center 인덱스에 앞에있는 index 접근
answer = s[center - 1] + answer ;
}
// 홀수인 상태에서 바로 뽑아올 수 있다.
// 짝수인 경우 2번째 인덱스를 접근해 2가 나오고
// 짝수에서는 가운데 2글자를 반환해
// w를 반환해서 return 해야 한다.
return answer
}
메서드를 이용한 표현법
function solution(s) {
const center = Math.floor(s.length / 2)
// 삼항 연산자 이용
// 홀수 = center 값return
// w의 인덱스 부터 자르자
console.log(center,s)
// 짝수 = 잘라서 return
const answer = s.length % 2 === 1
? s[center]// 홀수
: s.slice(center - 1, center + 1) // 짝수
return answer
}
참고 자료
'etc. > Algorithm' 카테고리의 다른 글
[프로그래머스 코딩테스트] 서울에서 김서방 찾기 (0) | 2022.01.19 |
---|---|
[알고리즘 테스트] 평균 구하기 (0) | 2022.01.18 |
[알고리즘 테스트] 체육복 (0) | 2022.01.18 |