📌강의정리
홀수면 가운데 하나, 짝수면 가운데에 2개를 출력해야하는 문제이다.
Math.floor를 쓰면 내림이니까 몫을 얻을 수 있다.
Math.floor(s.length/2)는 홀수이면 가운데의 인덱스번호를 가리킨다.
그 다음 if를 이용해서 %2를 이용해 주어진 문자열의 길이가 홀수인지 짝수인지 판별한다.
홀수이면 s.substring(mid, mid+1); 를 하면 mid부터 mid+1전까지이므로
mid만 나오게 된다.
짝수인경우는 가운데 두개중 높은부분이 mid이므로
s.substring(mid-1, mid+1)을 해야 가운데 두개 (mid-1, mid )가 인덱스기준 주소로 나온다.
또한 substr도 있다. substr(2,4)는 2번 인덱스부터 4개를 뽑아 5번인덱스까지 총 4개를 뽑아내라는 뜻이다.
📌느낀점
새로운 메서드를 배웠다. sunstring과 substr인데 처음 풀었을 때는 이걸 안쓰고 풀었지만 이제는 이걸 쓰고 풀어봐야겠다.
또한 나는 중간값을 구할때 Math.ceil을 썼는데 이게 아니라 Math.floor를 쓰면 따로 또 -1을 할필요 없이 바로 끝낼 수 있다.
항상 문제를 빠르게 푸는 것도 중요하지만 순간적으로 어떻게 풀지 고민을 해봐야 한다.
//나의 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
if(s.length % 2 != 0) {
let mid = Math.ceil(s.length/2)
return s[mid-1];
}
else{
let mid1 = s.length/2;
let mid2 = mid1+1;
return s[mid1-1]+s[mid2-1];
}
}
console.log(solution("abcdefg"));
</script>
</body>
</html>
//강사님 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
let answer;
let mid=Math.floor(s.length/2)
if(s.length%2===1) answer=s.substring(mid, mid+1);
else answer=s.substring(mid-1, mid+1);
//if(s.length%2===1) answer=s.substr(mid, 1);
//else answer=s.substr(mid-1, 2);
return answer;
}
console.log(solution("study"));
</script>
</body>
</html>
'JS 알고리즘 문제풀이 > 섹션 1. 기본문제 풀이' 카테고리의 다른 글
17.중복단어제거 (0) | 2022.01.12 |
---|---|
16.중복문자제거(indexOf) (0) | 2022.01.12 |
14.가장 긴 문자열 (0) | 2022.01.12 |
13.대소문자변환 (0) | 2022.01.12 |
12.대문자로 통일 (0) | 2022.01.12 |