220516_TIL

천처니·2022년 5월 15일
0

TIL

목록 보기
4/16

체감상 한달은 지난 것 같은데 이제 일주일 밖에 안됐다는게 믿기지 않는다.
요즘 간간히 어떻게 지내냐며 묻는 친구들에게는 자기개발 하고 있다고 대답한다. 자기 + 개발....
응... 자기 개발 하는거 맞지 뭐.

자기 + 개발 만 하고 있다(....)

본격적으로 들어간 알고리즘 주간은 상상 이상이었다. js 중요한 줄은 알고 있었으면서도 이런 문제풀이를 한번도 연습 해보지 않은 나새끼 부라보...

첫날엔 문제를 접하는 순간 뇌정지가 왔고, 한 문제 조차 제대로 풀지 못 했다.

문제의 답안을 구글에서 검색해 보니 왜 이런 답안이 나온지는 알겠는데, 내가 짤 줄 모르면 도저히 만족할 수가 없었다.

내가 직접 푼게 아니면 절대 푼게 아니다.
당장 다음주에 시험이라는데 이대로는 안된다. 해결책을 찾아야 했다.

알고리즘 주간 첫날의 회고록
알고리즘 이라는 말 처럼 문제를 풀기 위해 접근 방식을 달리 해보기로 했다.

문제 인식

  • 왜 이 문제가 주어지는가.
    - 말 그대로 자바 스크립트의 응용이다. 기초 자바스크립트 문법을 최대한 사용해 보자.
  • 이 문제를 왜 풀지 못 하는가.
    - 문제가 무엇을 요구하는지 정확히 파악하는 능력을 키워야 한다. 문제에서 불필요한 사족들을 떼고 문제가 요구하는 것을 수학적 공식으로 만들어 보자.

문제 해결을 위해 시도한 방법.

우선은 내가 풀어야 할 문제들 28문을 모두 훑어 보고 모든 답안을 검색해 봤다.
공통적으로 JS의 for를 사용한 반복문과 if를 사용한 조건문, function의 함수를 사용하고 있음을 알 수 있었지만, 어떤 시도를 해봐도 console을 출력하면 Nan과 Undifinded만 주구장창 출력되고 있었다.
for문과 if, function을 훈련하기 위해 이 문제들을 푸는건 아닐까 하는 추론을 해봤다.

이튿날인 토요일에는 그래도 전날 공부한답시고 이것 저것 찾아보고 알아 본 탓인지 지난날 보다 조금 나아졌지만 여전히 문제는 풀리지 않았다. 하지만 어떻게든 이 난국을 벗어날 생각으로 문제에 매달렸지만 결과는 실패의 연속이었고, 문제풀이 현황판에 하나 둘 이름을 올리며 문제를 풀어내는 다른 사람들을 보면서 조급한 마음이 더 커져만 갔다.

어느새 시간은 자정을 넘었고, 마음이 너무 조급하고 답답해 평소 친하게 지내던 현직 개발자 누나에게 메세지를 보내 징징거리니, 조급해 하지 말고 차근차근 익혀나가라며 부둥부둥 달래졌다.

그리고 숙제를 받았다(...)

...,?? 네,?? 이걸 코딩으로 구현하라구요,??
누나 나한테 왜그래... (심지어 이모티콘이 약오른다)

결국 문제를 푸느라 밤을 샜다.
'그래, 어차피 일요일에는 정규 과정 없으니까 늦잠이라도 자게 되더라도 풀고 자자.' 라는 생각과 함께 아침해를 보면서 결국 문제를 풀어내는데 성공했다.

누구의 도움도, 해답도 없이 해낸 기념비적인 내 첫 알고리즘 문제 도전 성공기였다.

const consonants = ['ㄱ', 'ㄴ', 'ㄷ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅅ', 'ㅇ','ㅈ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ'];
const vowels = {0: 'ㅏ', 1: 'ㅑ', 2: 'ㅓ', 3: 'ㅕ', 4: 'ㅗ', 5: 'ㅛ', 6: 'ㅜ', 7: 'ㅠ', 8: 'ㅡ', 9: 'ㅣ'};

for (const i of consonants) {
     for (const j in vowels) {
       let q = [`${vowels[j]}`]
        for(let z = 0; z < 1; z++){
          console.log([i, q[z]])
    }
  }
}

그리고 오늘로 알고리즘 주간 3일차.
주말이라 좀 쉴까 하는 생각도 들었지만, 남들보다 더 열심히 해야만 한다. 결코 소흘히 할 수는 없었다. 난 아직 단 1보도 앞으로 나아가지 못 했다.

일주일간 밀린 청소와 빨래, 장보기 까지 마치고 다시 집에 돌아와 코딩을 시작해, 세시간 정도 function을 뜯고 붙이고 엉망으로 만들어본 후에야 비로소 알 수 있었다.

난 아직 for문과 if문과 function을 이해하지 못 했다는 사실을.

이 문법들이 어떤 '기능'을 하는지만 알고 있었을 뿐 사용하는 방법을 몰랐었다.

생각이 들었고 반성했으면 어서 서둘러 시도해 봐야 한다.
유튜브 부터 구글까지 찾아 볼 수 있는 모든 수단을 동원해 function이 '뭔지'를 알아내려고 달려들었다.

어떻게든 이해해야만 한다.

영상과 MDN은 물론 찾아볼 수 있는 자료는 다 찾아 본 뒤 다시 코딩을 시작했다.
그 후 몇번의 시행착오와 오류를 넘어 드디어 프로그래머스의 1번 문제를 풀어내는데 성공했고 곧 이어 2번 문제도 풀어냈다.

프로그래머스에서 실행해 보고 도저히 틀린 부분을 모를 것 같을 때에는 답안을 찾아보고 이해했지만, 그 '이해'의 느낌이 첫날과는 사뭇 달랐다.

드디어 조금씩 코딩에 감이 잡히기 시작하는 것 같다.

막연하던 생각에 확신이 서고 나니 도전에 기세가 붙어 이대로 28번까지 거침없이 도전해 보고 싶었지만 이제 남은 과제는 내일 다시 해결해 보자.

어설프게 하지 않겠다고 각오 했으니까 해내야만 한다.

내일은 기필코 혼자서 열문제 이상 풀어보자.
이어질 중간고사에서 상당한 중압감이 느껴지지만, 이렇게만 해내면 잘 해낼 수 있을 것 같다는 생각이 든다.

0개의 댓글