오늘은 대망의 첫 출근!
기존에 학원에서 배웠던 건 제로라고 생각하고 오라는 말에 많이 긴장도, 설레기도 했던 첫날~!
같이 일하게 된 팀원분들은 무뚝뚝하면서도 내가 적응할 수 있게 신경써주시려는게 느껴져서 좋았다
나도 주접 조금 접어두고 너무 부담스럽지 않게 스며들어야징 ㅎㅎ
- Windows 10 설치해보기
- TypeScript 환경 구성
- 간단한 알고리즘 과제들
우선 나는 얼떨결에 국비 과정을 Mac 환경해서 진행해왔고, 그러다보니 어느새 Windows 와는 서먹해져 버렸다. 소장님 가라사대, " 우선 컴퓨터랑 친해져야 해 " 라는 말씀 하에
이렇게 세가지 조건으로 생애 두번째 윈도우 설치를 해봤다.
첫번째는 아마 대학시절 msi 노트북에 아빠 도움으로 깔았었지.... 기억도 가물가물 하다.
크게 어려운 작업도 아니었지만, 우선 소장님 말씀대로 뭔가 한결 컴퓨터와 친근(?)해진 기분!
윈도우 설치는 마냥 복잡하고 어렵다고 막연히 생각했었는데 의외로 쉬워서 긴장을 조금 풀 수 있었다.
JS 도 생초짜인 나에게 TS 가 가당키나 할까...? 싶었지만, Java 와 비슷하다 생각하고 임하면 된다는 말씀에 '그래 결국 언어겠지!' 라고 끄덕끄덕 받아들이기.
마치 Spring 을 쓰기 위해 JDK, IDE, WAS 가 필요한 것 처럼... TS 도 비슷한 준비가 필요했다.
글로벌로 설치했는데, 왜 글로벌로 설치하는지는 따로 찾아봐야겠다.
이렇게 3가지 간단한 과제를 내어주셨는데, 인상깊었던 말씀은 웬만하면 개발 관련은 영어로 검색할 것 !
이었다. 영어를 잘 못하더라도, 지금부터 영어 위주로 검색해두는 습관을 들여두면 5년 정도 뒤에는 웬만한 영어 문서는 많이 익숙해질 거라고. 면접 당시 이 힘든 개발일을 대체 왜...
하고 걱정 & 의구심으로 고민하시던 부분을 정말 나를 위해 고려하고 알려주시려는 구나 싶어서 많이 감사했다.
오늘 내주셨던 간단한 알고리즘 과제 중, 가장 마지막에 내주셨던 달력문제를 정리해보려고 한다.
- 함수로 만들 것
- Date 객체를 쓸 것
- 년, 월을 입력받을 것
- console 로 찍을 것
1. JS 의 Date 객체에는 WEEK_OF_MONTH 같은 마지막 주수 상수가 없다?!
예전 JSP 로 달력만들기에 썼던 방법이랑 비슷하게 만드려고 보니, Date 객체에는 그런게 없었다 ㅎ.. 구글링으로 어찌저찌 마지막 주수를 구하는 코드를 찾았는데, 지금 또 자신없는 것 보니 완전히 이해한게 아닌게 분명하다...
2. 접근 방식이 직관적이지 못하다!
내가 생각한 방법은 완전히 테이블 에 기초해서 찍어내는 방식으로, 결과물이 똑같이 나오더라도 해결하는 과정에서 생각의 흐름이 직관적이지도, 간단하지도 않다. 너무 어렵게 접근한다는 것...
결국 주수 구하기에서 헤매고 있으니 소장님이 힌트를 주셨다
--> 11월은 '공백', 1일, 2일..로 시작
--> 일주일은 7일!
이렇게 한문제씩 접근하니 코드를 쓰기 시작하기까지 오히려 시간이 줄었고, 로직을 짜는 부담감도 많이 줄어들었다. 썩 클린한 코드는 아니지만...! 원래 적용하려던 방식보다 몇줄 줄어들기도 했다.
function printCalendar(year: number, month: number){
const firstDate = new Date(year, month-1);
const lastDate = new Date(year, month, 0);
const dayOfFirst = firstDate.getDay();
const dayList: string[] = ['일','월','화','수','목','금','토'];
console.log(`${year}년 ${month}월`);
console.log( dayList.join(" "));
let line: string = '';
let date: number = 1;
row: for ( let row = 0; row < 7; row++ ){
for ( let col = 0; col < 7; col++ ){
if ( col < dayOfFirst && date == 1 ) {
line += ' ';
} else {
line += `${date++} `;
if ( date > lastDate.getDate() ) break row;
}
}
line += '\n';
}
console.log(line);
}
printCalendar(2021, 12);
아직 소장님이 보시진 않았지만... 어쨋든 별거 아닌거라도 조금씩 해결해보는(또는 실패해보는) 경험이 쌓이는게 중요하다는 말씀이 계속 뜨끈~하게 마음에 남는다 ㅎㅎ 가르쳐주시는 만큼 쏙쏙 잘 빨아먹는 막냉이(?)가 되야지!