[우테코 5기 프리코스] 5일차 회고록

BBIYAC·2022년 10월 30일
0
post-thumbnail

1주차 과제 설명
1주차의 미션은 온보딩으로 이전 기수에 있던 코딩 테스트를 없애는 대신 추가된 미션인 것 같다. 총 7문제의 알고리즘 문제들로 이루어져있고, 2022.11.01(화) 23:59 까지 문제를 해결한 후 PR(Pull Request)를 보내고, 우아한테크코스 지원 사이트에서 내 지원 현황에 제출까지 해야 1주차 미션을 해결한 것으로 처리된다.

회고록

오늘은 1번부터 7번까지 리팩터링하는 것을 목표로 정했다.
그러나 계획은 항상 틀어지는 법...... 2번 문제를 다시 푸는데 하루종일 매달려있었다. 문제 자체를 잘못 이해하고 있던 것이다..(이래서 기능 목록 정의가 중요한가보다. 매번 깨닫는다..)

👉 [javascript-onboarding] problem 2

암호 해독 순서
1. "browoanoommnaon"
2. "browoannaon"
3. "browoaaon"
4. "browoon"
5. "brown"

암호 해독은 연속으로 중복되는 문자를 삭제하면서 해당 순서대로 진행된다.

처음에 시도한 방법은 한 번 사이클을 돌 때 "oomm"만 지워지는 것이 아니라, "oomm"이 지워지면 "nn"이 새로 발생하니까 다음 사이클을 안돌고 바로 제거되도록 구현하였다.

얼핏 생각하면, 문자열을 탐색하는 반복문을 줄일 수 있으니 효율적일 것이라고 생각하게되는데, 예외사항이 있었다. "saddaas" 이 문자였다.

내가 첫 번째로 시도했던 방법으로 테스트하면 ""이 결과로 나오고, 해당 사이클에서 연속되는 문자들만 지워, 사이클을 여러 번 도는 방법으로 테스트하면 "sas"가 결과로 나온다.

문제에서 제시된 암호 해독 순서가 한 사이클씩 도는 방식이기 때문에 "sas"가 결과로 나오도록 구현했다. 바로바로 중복되는 값을 지우는 것보다 사이클 도는 방식을 구현하는데 더 오래걸렸다.

구현에 신경쓰다보니 불필요한 코드와 가독성 안좋은 코드가 포함되어 있다. 그러나 클린코드, 리팩터링보다 중요한 것은 일단 요구사항에 맞게 돌아가는 코드를 짜는 것이 더 중요하다. 아무리 좋은 코드라도 요구하는 기능을 구현하지 못하면 의미가 없기 때문이다.

처음부터 함수를 잘 분리하고 네이밍을 완벽하게 하면 좋겠지만, 나는 아직 햇병아리 왕초보니까.. 최대한 예외 사항을 고려하여 구현부터 제대로 해보자!

내일은 이 코드를 리팩터링하고, 이어서 3~7 문제도 리팩터링 해봐야겠다. 여러 번 확인할 때마다 수정해야할 부분이 보이고, 놓치고있던 부분도 보인다. 코드는 '완성'이 없는 것 같다.

profile
어제의 나보다 성장한 사람이 되자 :)

0개의 댓글