[Front-end] 개발자 공부

[개발 공부 49일차] TypeScript, 왜 사용할까? | 하샤드 수

MOLLY_ 2024. 3. 5. 02:24
728x90

 

 


오늘, 주특기 플러스 주차 챕터에 들어섰다.
팀원이 전부 바뀌었다. 챌린지에 속해 있는 다른 분들과도 함께 협업할 수 있는 기회에, 스탠다드 반 분들과도 교류할 수 있어서 기쁘다. 하지만 가장 기쁜 건,, 이번엔 처음으로 팀 인원이 5명이라는 것이다. 감격 그 자체다 ㅠㅠ ,,, 이번은 아무도 안 나가시겠지..? ㅠㅠ
 
쭉 부족한 인원 + 잠수 타거나 하는 팀원이 있어 개인 공부 시간이 턱없이 부족했는데 이번은 마음이 좀 놓인다. 그래서 오늘도 내 부족한 공부를 확실하게 채우기 위해서 열심히 공부하였다.
 
 

< 목차 >
1. [09:00~10:00] 코드카타 문제 풀이
   (1) 하샤드 수
   (2) 콜라츠 추측
2. TypeScript 사용 이유
3. 금일 소감

 
 

1. [09:00~10:00] 코드카타 문제 풀이
   (1) 하샤드 수

[문제 설명] 하샤드 수

 
 
자릿수를 합한 값으로 주어진 수 x를 나눴을 때 나머지가 0이면 '하샤드 수'라는 얘기다. 하샤드 수인지 아닌지 알아내서 true 혹은 false를 반환하면 되는 듯하다.
 
 

▼  내가 작성한 추론 및 답

function solution(x) {
    var answer = true;
    if (x % 자릿수합 === 0 ) {
        return `${x}의 모든 자릿수의 합은 ${n}입니다. ${x}는 ${n}으로 나누어 떨어지므로 하샤드 수입니다.`
    } else {
        return `${x}의 모든 자릿수의 합은 ${n}입니다. ${x}는 ${n}으로 나누어 떨어지지 않으므로 하샤드 수가 아닙니다.`
    }
    return answer;
};

 
 
 
일단 딱 봐도 정답은 아니고 자릿수를 어떻게 쪼개야 하는지 모르겠어서 정답을 찾아봤다. 정답을 보니 이해가 확 되었다. split을 떠올렸어야 했다.
 
 

▼  정답 코드

// (1) 먼저 x를 split()을 사용해 자릿수로 나누어 준다.
// (2) for문을 돌려 나눈 자릿수들을 더해준다.
// (3) x와 더한 값을 나누어 반환되는 나머지를 판별해 조건에 따라 출력한다.

function solution(x) { // x = 18
    var sum = 0;
    var arr = String(x).split(""); // [1, 8]
    
    for (let i = 0; i < arr.length; i++) {
        sum += Number(arr[i]) // 1 + 8
    }
    return (x % sum == 0) ? true : false;
};

 
 
 

   (2) 콜라츠 추측

[문제 설명] 콜라츠 추측

 
 
일단 작성하긴 했는데 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 코드 올리기 전에 다시 보는데 뭔 이렇게 코드를 난잡하게 짰을까 ㅋㅋㅋㅋㅋㅋㅋ 테스트 돌려보니 3개 중 하나만 통과했다. 그래도 얼마 전까지 아무 코드도 작성 못했던 것에 비하면 많이 나아진 것 같긴 해..
 
 

 
 

▼  내가 작성한 추론 및 답

function solution(num) {
    var answer = 0;
    for (let i = 0; i <= 1; i++) {
        if (num % 2 == 0) {
            answer = num / 2;
        } else {
            answer = num * 3 + 1;
        }
        answer += 1;
        if (answer >= 500) {
            return -1;
        } else {
            return answer;
        }
    }
}

 
 
 

▼  정답 코드

function solution(num) {
    var answer = 0;
    while(num !=1 && answer != 500) {
        num % 2 == 0 ? num = num / 2 : num = num * 3 + 1;
    answer++;
  }
    return num == 1 ? answer : -1;
}

 
 
 

2. TypeScript 사용 이유

 
: 개발의 효율성과 안정성을 높이기 위함
 
 
타입스크립트는 자바스크립트(JavaScript)의 상위 집합이며, 자바스크립트에 타입 시스템을 추가하여 보다 엄격한 코드 작성을 가능하게 한다. 타입스크립트는 아래와 같은 이점들 덕분에 웹, 서버, 모바일 앱 개발 등 다양한 분야에서 널리 사용되고 있으며 자바스크립트 개발자들 사이에서도 인기가 많다.
 
 

 
 

TypeScript가 제공하는 이점

  1. 타입 안정성: 타입스크립트는 변수, 매개변수, 객체 속성 등의 타입을 명시적으로 선언하도록 하여, 개발자가 실수로 잘못된 타입의 값을 할당하는 것을 방지한다. 이로 인해 런타임 오류의 가능성이 줄어들고, 코드의 안정성이 높아진다.
  2. 개발 도구의 향상된 지원: 타입 정보를 활용하여 코드 편집기와 IDE(통합 개발 환경)가 보다 효율적인 자동 완성, 코드 내비게이션, 리팩토링 등의 기능을 제공할 수 있게 된다. 이는 개발 과정을 더욱 빠르고 쉽게 만들어 준다.
  3. 문서화의 개선: 코드 자체가 명시적인 타입 선언을 포함하기 때문에, 추가 문서 없이도 코드의 인터페이스와 기대하는 데이터 타입을 이해하기 쉬워진다. 이는 코드의 가독성을 향상시키고, 새로운 개발자가 프로젝트에 참여할 때의 학습 곡선을 낮춘다.
  4. 대규모 프로젝트 관리 용이: 타입스크립트의 타입 시스템은 대규모 프로젝트에서 코드의 구조를 명확하게 유지하고, 복잡성을 관리하는 데 도움을 준다. 이는 프로젝트의 확장성과 유지 보수성을 향상시킨다.
  5. 커뮤니티와 생태계: 타입스크립트는 광범위한 커뮤니티 지원을 받으며, 많은 *오픈 소스 라이브러리와 프레임워크가 타입스크립트 타입 정의를 제공한다. 이는 개발자가 외부 라이브러리를 사용할 때 타입 안정성을 유지할 수 있게 해준다.

 
 

* 오픈소스(Open Source)

: 소프트웨어의 소스 코드가 공개되어 있어 누구나 자유롭게 사용, 수정, 배포할 수 있는 소프트웨어 라이선스의 한 형태
 
오픈소스 소프트웨어는 개발자 커뮤니티에 의해 개발되고 유지 관리되며, 이러한 공개적이고 협력적인 개발 방식은 소프트웨어의 품질 향상, 혁신 촉진, 그리고 빠른 문제 해결을 가능하게 한다.
 


오픈소스의 핵심 원칙

  • 접근성: 소프트웨어의 소스 코드가 공개되어 있어, 누구나 열람할 수 있다.
  • 자유로운 사용: 개인이나 조직은 상업적 목적을 포함하여 어떤 목적으로든 소프트웨어를 자유롭게 사용 가능
  • 수정의 자유: 소프트웨어를 자신의 필요에 맞게 수정할 수 있으며, 이러한 변경 사항을 다시 공유 가능
  • 배포의 자유: 수정된 원본 또는 수정되지 않은 소프트웨어를 자유롭게 배포 가능

 
오픈소스 소프트웨어는 다양한 라이선스 하에 배포될 수 있으며, 각 라이선스는 사용, 수정, 배포에 대한 구체적인 조건을 명시한다. 가장 널리 알려진 오픈소스 라이선스로는 GNU 일반 공중 사용 허가서(GPL), MIT 라이선스, Apache 라이선스 등이 있다.
 
 
 

3. 금일 소감

연휴 동안 피곤한 이유도 있지만 심적으로 해이해진 느낌이 들고, 공부 진도도 내 생각만큼 빼지 못했는데 다시 평일로 돌아오고 사람들과 같이 공부하는 분위기가 조성되니 집중이 훨씬 잘 됐다.
 
그간 블로그 포스팅이 우울한 느낌도 없지 않아 있었는데, 이번에 JS 문법 다시 듣고 하면서 어떻게 해야 할지 마음도 다잡고 방법도 알아내서 이제 다시 의욕과 열정 넘치게 달릴 생각이다. 물론 오늘부터 달리고 있긴 하다.
 
오늘은 주특기 플러스 주차 시작일인 만큼 자바스크립트 공부 다 끝내고, 타입스크립트 1주차 강의를 완강했다. 자바스크립트 문법 종합 강의 5주차 내용과 이어져서 타이밍 좋게 공부한 느낌이 확 들었다. 내일 오전 ~ 이른 오후까지는 아마 부족한 React 숙련 & 심화 공부를 할 듯한데 내일 챌린지 정기 세션이 있는 저녁 시간대까지는 타입스크립트 강의를 다 들어야겠다. 1/4은 들었으니 나머지도 금방 들을 수 있을 것 같다. 얼른 얼른 해서 따라잡고 그 이상으로 공부해야지! 이번 주도 파이팅!!!!!!!!! 🔥 ❤️‍🔥🔥
 

728x90