우당탕탕 개발일기
[프로그래머스 / 자바스크립트] 가운데 글자 가져오기 본문
📎 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
💡 나의 답안
function solution(s) {
var answer = '';
if (s.length % 2 == 0) {
answer = s[s.length / 2 - 1] + s[s.length / 2];
} else {
answer = s[s.length / 2 - 0.5]
}
return answer;
}
//console.log(solution("abcde"))
먼저, 단어의 길이(개수)를 사용하여 조건문을 만들었습니다.
짝수의 경우, 단어의 길이(개수)를 반으로 나누었을 때 나오는 숫자번째와 +1 된 숫자가 가운데였습니다.
ex. abcd = 4글자
> 4 / 2 = 2
> 2번째 글자(b)와 2 +1인 3번째 글자(c)가 가운데 글자
홀수의 경우, 똑같이 단어의 길이(개수)를 반으로 나누었을 때에서 소숫점을 없애면, 즉 +0.5를 하게 된 숫자번째의 자리가 가운데였습니다.
ex. abc = 3글자
> 3 / 2 = 1.5
> 1.5+0.5 = 2(번째 글자 = b)
ex2. abcde = 5글자
> 5 / 2 = 2.5
> 2.5+0.5 = 3(번째 글자 = c)
if (s.length % 2 == 0) { // 짝수 구분하기
answer = s[s.length / 2 - 1] + s[s.length / 2]; // 여기까지가 짝수의 가운데 글자 가져오는 부분
} else {
answer = s[s.length / 2 - 0.5] // 여기가 홀수의 가운데 글자 가져오는 부분
}
대괄호([]) 안의 배열들은 시작이 0부터 시작하므로 abcd 에서 가운데 'b'는 2번째가 아니라, 배열에서의 1번째 요소가 됩니다.
그래서 위에서는 +1번째라고 했지만 (글자 자체를 보았을 때), 배열 안에서의 위치를 구해야하므로 -1을 적용시킨 것입니다.
홀수도 같게 적용해서 +0.5가 아니라 -0.5를 해주었습니다!
이상입니다!
(+) 문제를 풀고 다른 분들의 해결방법 보니 올림/내림/반올림 함수를 많이 사용하셔서
홀수부분을 answer = s[Math.floor(s.length / 2)]로도 바꿀 수 있었습니다!
(cf. Math.ceil 은 소수값을 올리는 함수이고 Math.floor 는 소수값을 버리는 함수이며, Math.round 는 반올림 함수입니다!)
📍출처 :
https://programmers.co.kr/learn/courses/30/lessons/12903
'What I Learned > Algorithm' 카테고리의 다른 글
[프로그래머스 / 자바스크립트] 수박수박수박수박수박수? (0) | 2022.01.24 |
---|---|
[프로그래머스 / 자바스크립트] 내적 (0) | 2022.01.24 |
[프로그래머스 / 자바스크립트] x만큼 간격이 있는 n개의 숫자 (0) | 2022.01.24 |
[프로그래머스 / 자바스크립트] 없는 숫자 더하기 (1) | 2022.01.24 |
[프로그래머스 / 자바스크립트] 음양더하기 (0) | 2022.01.24 |