2주차는 알고리즘 주간이었다. 단순히 코드를 치고 구현만 하는 것을 넘어서 코드를 짜보면서 코드의 원리를 배울 수 있는 것이 좋았던 주간이다. 문법을 먼저 공부하고 푸는게 정석적이겠지만 바로 프로그래머스 알고리즘 문제들을 풀어보는 것부터 시작했다. 문제가 요구하는 것을 풀기 위해서 어떤 것들을 구해야 하는지 순서들을 쪼개보고 아는 javascript 문법은 for loop랑 .repeat() 정도라 대부분은 '문자열의 n번째 문자 가져오는 법', 'how to check if a number is an integer in js'이런식으로 구글링을 하면서 찾은 method들을 이용해 풀면서 문법에 조금 익숙해졌다. 처음 이틀은 너무 재미있어서 문제 푸는데만 집중해서 28개 문제중에 20개는 풀었고 2개는 답지를 봤고 5개는 논리적으로 맞는 풀이순서 같은데 계속 실패해서 혼자 더 풀어보고자 보류해두고 하나는 어떻게 풀지 감이 안잡혀서 더 생각해보고자 보류해뒀다.
월요일부터는 다른사람들의 풀이법을 봤는데 보면서 더 공부되는 부분들이 많았어서 기초문제는 논리적인 풀이법을 알겠다면 바로 답지를 살펴보는게 현명한 방법이었겠다는 것을 깨달았다. 그래서 문법공부를 병행하며 기초문제 풀이를 반복하고 기초가 탄탄해지면 오롯이 혼자힘으로 고급문제들에 도전해보고 싶다.
가장 많이 성장한 부분은 코드를 쪼개가면서 console.log()를 활용해 문제가 생긴 부분을 파악하고 그에 맞는 해결방법들을 찾아나간 것이다. 이론적인 부분들에 근거해서 고쳐보거나, 왜 써야하는지 이해 안가는 부분들은 지웠다가 테스트 돌려보고, 이것저것 바꿔써보고 테스트하는 식으로 실험을 하니 글로 이해가 안가는 문법이 이해가 되기도 하고 질문해볼만한 궁금증들도 더 생기는게 좋았다. 3-5주차 주특기 주간은 잠잘시간도 부족하대서 알고리즘 공부 흐름을 잠시 멈춰야하는게 아쉽지만 앞으로 문법과 알고리즘을 어떤식으로 공부할지에 대한 생각이 잡혔다. 얻어가는게 많은 주다.
알고리즘 문제들이 기초였기 때문에 질문할 내용도 비교적 명확하고 정보도 많아서 대부분은 새로운 방법들을 적용하면서 자잘한 에러들을 해결하는 부분들이었지만 가장 오래 고민해본 것들을 꼽자면 '문자열 다루기 기본'에서는 Number(), '이상한 문자 만들기'에서는 splice()의 return 값과 multiple map() method에 관한 것들이다.
function solution(s) {
const isNumeric = n => !!Number(n);
var answer = (s.includes('e')? false: isNumeric(s) == false? false: s.length !== 4 && 6? false: true);
return answer;
}
var A = allCap[0].split('');
A.splice(1, 1, "r");
return A;
function solution(s) {
"try hello world" -> "TRY HELLO WORLD"
const upperStr = s.toUpperCase();
const arr = upperStr.split(' ');
const changedArr = arr.map(n => {
const charArr = n.split('');
const changedChar = charArr.map((m, idx) => idx%2 !=0 ? m.toLowerCase() : m);
return changedChar.join('');
});
return changedArr.join(' ');
}
알고리즘 주간은 주특기 공부때 js로 쓰인 코드를 구글링하고 이해할 수 있도록 최소한의 기초를 공부해보는 주간이다. 기본기가 아직도 부족한데 주특기 공부로 넘어가는 것은 걸음마도 못뗀 아기에게 달려보라고 하는 것과 같아서 더 기본기를 공부하고 싶지만, 그래도 처한 상황에 어떻게든 결과를 내보고자 항해에 지원한거니까 한번 정했으면 그냥 할때까지 이 마음가짐을 고수하도록! 동거인이 코로나 걸려와서 저녁 먹고 나서는 컨디션이 말이 아니긴한데 핑계 없이 할 수 있는데까지 해보자. 아쉬움이 남지 않도록.
더 알아보기