[프로그래머스]JAVASCRIPT- 13

김윤지·2022년 8월 19일
0

JAVASCRIPT

목록 보기
14/25


글자 수가 홀수면 가운데 글자 하나만 출력하고
짝수일 경우엔 가운데 글자 두개 출력하는 문제

내 코드


글자수를 2로 나눈 후 round함수를 이용해서 반올림하기!
그러면 글자 수 5면 3, 글자수 4면 2가 나옴!

if 문으로 입력문자가 홀수인지 짝수인지 판별한 후
round함수를 이용해 만들어논 숫자로 인덱싱하면 된다고 생각!

function solution(s) {
    let num = Math.round(s.length/2);
    console.log(num);
    let answer = "";
    
    if (num % 2 === 0) {
        answer = s.substr(num-1,num);
    } else {
        answer = s[num-1];
    }
    return answer
}

성공~


인줄 알았는데~
테스트 실패는 뭔데? 진짜??

프로그래머스 싹퉁바가지인게 지네들 맘대로 테스트함
적어도 뭘 테스트했는지 나중에라도 알려줬음 좋겠는데, 안알려줌
ㅡㅡ

암만 생각해봐도 내가 구조를 잘못 생각한게 아닌데, 뭐지? 싶었음

일단 Math.round()함수가 잘못 적용되는게 아닐까 생각이 듦
생각해보니깐 파이썬에는 '// ' 연산자 처럼 아예 몫만 구해주는게 있는데
잡스는 따로 배운적이 있던가? 하고 검색해봤둠.

parseInt(number);
이걸 사용하면 파이썬의 '// '처럼 몫을 구할 수 있다!

그냥 파이썬 처럼 '// ' 연산자 하나 추가해주지 ㅡㅡ
암튼 Math.round() 대신 parseInt()로 바꿔봤는데 그래도 테스트 몇 개 통과 못함
그래도 다행인건 정확성이 70퍼인가로 올라갔다는 점..?

그래서 잡스 문자열 자르는 함수들도 다시 알아봄.
split, substr, substring, slice 다 알아봤는데,
내가 쓴 substr은 특정 Index에서 원하는 길이만큼 잘라서 문자열로 리턴
substring이랑 slice는 Index start를 포함하고 Index end를 포함하지 않는 문자열을 잘라서 리턴한다고 함..
...

function solution(s) {
    let num = parseInt(s.length/2);
    console.log(num);
    let answer = "";
    
    if (s.length % 2 === 0) {
        answer = s.slice(num-1,num+1);
    } else {
        answer = s[num];
    }
    return answer
}

그래서 substr 대신 slice를 사용했는데 성공함.. 뜨든..

기억하자! substr(인덱싱 시작, 자를 길이)

참나.. 그렇게 테스트 많이 했으면서 1 점 뭔데 ㅡㅡ
오늘의 코테도 성공~ ㅡㅡ


문자열 나누기

[참고 링크]https://codechacha.com/ko/javascript-how-to-substring/

split: 구분자로 문자열 분리하여 배열로 리턴

substr: 특정 Index에서 원하는 길이만큼 잘라서 문자열로 리턴

substring: 시작 Index에서 끝 Index 전까지 문자열을 잘라서 리턴

slice: substring과 비슷하지만 살짝 다른 메소드

profile
Java, Javascript, python, DB

0개의 댓글