항해99 2주차 WIL
WIL - Weekly, I Learned
11/8 | 11/9 | 11/10 | 11/11 | 11/12 | 11/13 |
팀 배정 | 19 알고리즘 특강 | 19 Mingle Wednesday | 17 항해톡 | 자릿수 더하기 | Coding Test |
직사각형 별 찍기 | 직사각형 별 찍기 | 평균구하기 | 내적 | 자연수 뒤집어 배열로 만들기 | JavaScript 강의 |
두 정수 사이의 합 | 짝수와 홀수 | 핸드폰 번호 가리기 | 문자열 내 p와 y의 개수 | 내림차순으로 배치하기 | |
음양 더하기 | 가운데 글자 가져오기 | 행렬의 덧셈 | 문자열 다루기 기본 | 정수 제곱근 판별 | |
JavaScript 강의 | 두 정수 사이의 합 | x만큼 간격이 있는 n개의 숫자 | 서울에서 김서방 찾기 | 제일 작은 수 제거하기 | |
문자열을 정수로 바꾸기 | 부족한 금액 계산하기 | 수박수박수박수박수? | 콜라츠 추측 | ||
없는 숫자 더하기 | 2017년 | 완주하지 못한 선수 | 하샤드 수 | ||
음양 더하기 | 나누어 떨어지는 숫자 배열 | 이상한 문자 만들기 |
11/08 월요일
팀 배정
월요일 00시에 항해 check in/out에 팀이 변경되었다길래 바로 보러 갔는데 다 모르는 사람... 그나마 알던 분들은 다 spring으로 가셨다. 다들 분명 후회하실거야. Java의 class에서 다들 이게 무슨 소리지? 이게 뭐지? 하면서 엄청 힘들어하실거야... 분명 그럴거야... 아무도 node로 안 왔어... 다 spring이다 그거지... 분명 하면서 엄청 힘들거야... 그럴거야... 그래 나만 node야...
코딩테스트 준비 시작
금요일까지 풀어야 하는 문제 28개 공유가 되자마자 멘탈이 터졌다. 문제를 봤더니 이게 뭘까... 이걸 내가? 짝수 홀수는 알겠는데 뭐요? 왜 직사각형을 별로 찍는거죠? 왜 김서방을 찾아야하고? 수박수박은 왜 뭐지? 도대체 없는 숫자를 왜 찾아서 더하죠? 도대체 이거 누가 만든거지? 멘탈 바사삭도 아주 잠시는 아니고 아주 오~래 지속되었다.
일단 하루에 3문제씩 나눠서 모르면 답지를 봐서라도 이해를 해서 팀원들에게 설명하는 방식으로 가기로 했지만 해설이 정말 다양하다. SQL을 하면서 느꼈지만 코딩은 정말 문과를 위한 문과만이 가능한 문과가 문송하지 않을 그런 것 같다.
어떻게 풀어야 하는지 감도 안 잡혀서 자바스크립트 강의를 처음부터 들었는데 이건 또 너무 시간 버리는 짓이 아닌가 싶었다. 이미 어느정도 알고 있는 문법이고 어차피 이게 문제라면 방법만 습득하면 될 일! 이라고 생각했던 내 자신 죽어라 ^ㅇ^!
11/09 화요일 ~ 11/12 금요일
코딩테스트 준비
09:00 ~ 11:00 | 티스토리에 알고리즘 정리하여 업로드 |
11:00 ~ 12:00 | 전날에 풀었던 문제의 다른 풀이 찾아보기 |
12:00 ~ 13:00 | 점심 냠 |
13:00 ~ 16:00 | 담당 문제 풀도록 노력하나 30분 이상 안 되면 풀이 찾아서 해석하고 노션에 풀이 업로드 |
16:00 ~ 17:00 | 최대한 아는 방식으로 풀고 줄일 수 있으면 줄여보기(if > 삼항연산자) |
18:00 ~ 19:00 | 내 머리는 과연 머리가 맞나 고뇌하기 |
19:00 ~ 20:00 | 저녁 냠 |
20:00 ~ 02:00 | 1일 7문제 풀도록 노력하나 1시간 이상 안 되면 풀이 찾아서 해석하고 노션에 풀이 업로드 |
알고리즘 강의도 없고 무슨 방법도 없이 문제만 주길래 화가 매우 났으며 테스트에서 과락이면 누적으로 실전 프로젝트 참여에 불이익을 받을 수 있다는 말을 듣고 매우 가슴이 쫄렸다. 진짜 엄청 쫄아서 열심히했다. 맨땅에 헤딩하는 수준이라 걱정도 많았는데 저렇게 반복을 하다보니 수요일부터 어느정도 문제가 보이기 시작했다. 처음엔 문제가 10줄이 넘어갔지만 나중에는 함수 활용이 익숙해져서 풀었던 문제를 줄이고 또 줄여서 더 깔끔하게 완성했다. 다른 분들에게는 너무 막막한 커리큘럼이 아닐까 싶은데 오히려 나한테 맨땅에 헤딩은 확실히 공부가 되었다. array에 new를 따로 선언하지 않는다는 점, 함수 이어 붙이기로 2줄에 끝낸다는 점이 나를 더 재밌게 만들었다. 자바에 익숙했던 나에게 자바스크립트는 엄청난 재미가 되었다. for, if로 문제 제출을 해 1점 많아야 2점을 받다가 다른 분들 아이디로 줄인 코드를 제출했더니 6점도 나오고 나중에는 11점까지 나오고... 희열... 덕분에 자바스크립트 공부가 많이 재밌어졌다. 이걸 지켜보던 친구는 나한테 미친 것 같다고 했는데 좀 미쳐보이면 어떤가 자바는 안 되고 자바스크립트는 다 되는데!
아 그리고 Mingle Wednesday에 거짓말 잘해서 책 받음
11/13 토요일
코딩테스트
사전 설명에서 낮은 난이도의 문제를 제출한다 그러길래 내심 기대도 했지만 SKY캐슬에서 그랬지... 의심하고 또 의심해... 낮은 난이도 문제를 두개나 엮어주셨네 ^ㅇ^! 그래도 제일 쉬워 보이는 짧은 줄로 끝낼 수 있는 2번째 문제를 선택했다.
자연수 n의 각 자리 숫자를 뒤집은 순서로 더해 출력하는 수식을 리턴해주세요.
예를들어 n이 12345이면 "5+4+3+2+1=15"라는 문자열을 리턴합니다.
function solution(n) {
let answer = String(n).split('').reverse().map(Number).reduce((a,b) => (a+b))
return answer
}
let n = 67457412
console.log(solution(n)) // 36
뭐야 쉽네 괜찮네 아는거네 이거야 이거지! 하고 끝냈지만 의심하고 또 의심해... 라는 생각에 문제를 보니 결과 값만 리턴하는 게 아닌 식도 리턴을 해야했던 것이다. 와 진짜 SKY캐슬은 명작이다.
let n = 67457412
function solution(n) {
var count = ''
var sum = 0
n = String(n).split('').reverse()
for (let i = 0; i <= n.length; i++) {
sum += parseInt(n[i])
if ( i != n.length - 1) {
count += n[i] + "+"
} else {
count += n[i] + "="
break
}
}
sum = String(sum)
var answer = count + sum
return answer
}
console.log(solution(n)); //2+1+4+7+5+4+7+6=36
금방 완성된 코드는 아니다. if 에서 삼항 조건 연산자로 바꾸는 재미에 빠져있었기에 삼항 조건 연산자로 완성하려 하였지만 else 부분에서 빠져나오지 않고 계속 =36이 아닌 =undefined+NaN 값을 출력해 무슨 문제인지 고뇌에 빠졌다. break문 사용하면 끝날 문제였지만 고뇌 후에 타협하여 if문으로 바꿔 제출하고 길고 긴 코딩테스트는 끝났다.
물론 월요일 멘토 상담이 남아있지만 ^ㅇ^ 코드 왜 이렇게 짠거냐고 이게 나의 능력이냐 물으신다면 한강물 온도나 체크하러 가야지... 물론 안 그러시겠지만 만약 이걸 본다면 저에게 따듯한 말만 해주시길 바랍니다(빈하트)
11/14 일요일
회고록 쓰는 날
TIL을 열심히 써볼까 하다가 한 주를 다 정리한 방식이 내가 보기 편하기 때문에 WIL을 열심히 쓰기로 했다.
매니저님이 공지에 회고 일지 제출은 선택이 아니라 필수라고... 예... 항해99 월요일부터 토요일까지가 아니라 일요일까지 주 6일이군요! 그러면서 왜 주 6일이라 그래서 일요일은 쉬는구나 싶은 마음을 갖게 해준거지? 주 6.5일로 바꾸세요.
이번 WIL의 키워드 정리
Node.js, React: JavaScript의 ES란?, ES5/ES6 문법 차이
Java Script - ES
ES란 ? ECMAScript의 약자이며, JavaScript의 토대를 구성하는 스크립트 언어이다. ECMAScript는 쉽게 말하면 ECMA라는 비영리 단체가 만든 ECMA-262라는 기술 규격에 따라서 정의한 표준화된 스크립트 언어다
cloud-cuckoo-land.tistory.com
이번주를 마감하는 한마디
자바스크립트는 위대했고 코딩테스트 누가 만들었냐