인프런 커뮤니티 질문&답변

서나현님의 프로필 이미지
서나현

작성한 질문수

자바스크립트 비기너: 튼튼한 기본 만들기

6. 인덱스로 문자열 처리, [코딩 시간]

인덱스 코딩시간 문제풀이

작성

·

305

0

indexOf(), lastIndexOf()를 활용한 코드 작성 문제 풀이입니다. 부족하거나 틀린점이 있다면 알려주세요!

이런식으로 하는게 맞는지 문제해결방식이 헛갈리네요...!

//출생날짜를 변수로 저장
var birth = "19971212";

//나이가 27살인가요?
var k = birth.indexOf(1997); 
//출생에 제일 앞에 위치하는 년도 4자리는 앞에서부터 구해야 정확하니 indexOf를 사용하여 변수 k에 저장해준다
if(k == 0){
    //년도가 인덱스 0번째로 확인된다면 원하는 년도 출생임으로 27세가 된다.
    console.log("27세 입니다.");
}else{ 
    //그렇지 않을 경우 다른 나이로 판단한다.
    console.log("27세가 아닙니다.");
}

//생일이 12월인지 구하시오.
var i = birth.lastIndexOf(12, 4);
//생일은 년도보다 뒤에 있기 때문에 lastIndexOf를 사용하되 날짜와 혼동 될 수 있으므로 2번째 파라미터를 활용해 월에 해당하는 위치부터 시작하도록 설정한다.
console.log(i);
if(i == 4){
    //인덱스 4번째가 월에 해당하는 위치이기 때문에 해당 위치로 확인되면 12월생임을 알 수 있다.
    console.log("12월생입니다.");
}else{
    //그렇지 않을 경우 다른 월로 판단한다.
    console.log("12생이 아닙니다.");
}

답변 1

1

김영보님의 프로필 이미지
김영보
지식공유자

주석을 잘 작성해서 너무 멋있습니다. 지금처럼 꼭 습관을 만들기 바랍니다. 이렇게 1~2년하면 다름 사람과 차별화될 것이며 취업/이직할 때 좋은 평가를 받을 것입니다. 코드에서 느낀 것을 적어봅니다. 틀린 것은 아니니 참고하면 되겠습니다.

var k = birth.indexOf(1997);
==> var year = birth.indexOf(1997);
k는 가독성이 떨어지므로 year

if(k == 0){...}
==> if (k === 0){...} // === 3개

var i = birth.lastIndexOf(12, 4);
==> var month = birth.lastIndexOf(12, 4);
i는 가독성이 떨어지므로 month

if(i == 4){...}
==> if (k === 0){...} // === 3개

인덱스 4번째가 월에 해당하는 위치이기 때문에
==> 인덱스는 0부터 시작하므로 5번째
인덱스 값 4, 5 두자리가 월에 해당하므로

이 정도 데이터는 indexOf()나 lastIndexOf()의 차이가 없습니다. 물론 시맨틱으로는 가치가 있습니다.
var i = birth.indexOf(12, 4);

서나현님의 프로필 이미지
서나현

작성한 질문수

질문하기