벌써 우아한 테크 코스를 신청한지 3달을 넘어간다.이 시점에서 굳이굳이 프리코스들의 후기를 작성하는 이유는!결과적으로 말하자면 5기에 합격했기 때문이다.거기다가 이제 2주뒤면 정식으로 5기 시작하기도 함..ㅋ나는 끈기랑은 좀 먼 사이인데, 정식 코스 하면서는 매주 회고록을 써보자고 스스로 다짐했기 때문에,, 처음으로 블로그를 시작해보려고 한다.아아,, 나 자신 화이팅이다. 아무튼 이 글을 읽는 사람은 없겠지만 만약 당신이 우테코를 준비한다면 꽤나 도움이 될지도 아닐지도ㅎ
🫧문제 및 코드 보기🫧
GitHub - hafnium1923/javascript-onboarding: 온보딩 미션을 진행하는 저장소
온보딩 미션을 진행하는 저장소. Contribute to hafnium1923/javascript-onboarding development by creating an account on GitHub.
github.com
1주차 미션인 온보딩미션은 너 기본 알고리즘을 짤 수 있니? 에 대한 문제들이었다.
다르게 말하자면 '이정도만 할 수 있어도 괜찮으니 겁 먹지마'였다.
문제의 난이도가 높다고 생각되진 않았다. 본인은 전공생이지만 학교 수업외 다른 공부는 따로 하지않아서
주된 공부는 백엔드였다.
때문에 프론트를 공부한지는 오래되지 않아서 알고리즘을 짜는 것보다 JS문법을 익히고 적용하는것이 가장 오래 걸렸다.
최종합격을 한 입장에서 말해보자면 만약 미션이 어렵게 느껴지더라도 답을 서치하는 것은 지양하는 것을 추천한다. 미션별 1주일이라는 시간을 주니 본인이 조금 부족하다고 느낀다면 그 시간을 최대한 활용 해보도록 하자.
지금 내 코드를 다시 보고나니 좀..ㅋㅋ 쪽팔리다. 왜 이렇게 했지란 부분도 많고 무턱대고 코드를 짜다보니 readme를 작성하지도 않았다. 그래도 그 짧은 기간동안 나름 발전은 했나보다! 뿌-듯
1번 문제
비교부분 while에서 오래 걸렸다. 원래는 아무 함수도 안걸고 했는데 계속 무승부결과가 안나오는 거다.
그래서 console.log 해봤는데 소수가 나오길래 Math.ceil 함수를 써봤다.
그러니까 score /= 10 에서 무한반복이 뜨는 거다. 해결하기 위해 console.log로 다시 찍어보니 score/= 10이 정수형이 아니라 9.7 이런식으로 소수가 돼서 올림 시키면 계속 무한루프가 발생 할 수 밖에..
그래서 그 부분만 Math.floor로 했는데 생각해보니 그냥 다 정수로 처리하면 굳이 상황 따져가며함수 다르게 사용할 필요가 없어서 결과적으로 parseInt()를 사용했다.
그랬더니 결과가 깔끔'S ~~
2번 문제
분명 내가 생각해서 쓴 코드인데 왜 돌아가는지 모르겠다.
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 돌아가는게 정상이긴 한데 왜 돌아가지?
이거보다 더 좋은 알고리즘이 분명 있는데 java나 c가 아닌 js로 표현하는게 어려웠다.
중복되는 문자열을 지우기 위해 여러 함수중 replace를 선택한 것은 다른 것은 잘린 문자열을 기준으로
앞뒤 모두 구해서 붙여야하는데 이경우 따질 경우가 너무 많아졌기 때문이다. 그래서 연속되는 문자만
""로 대체 할 수 있도록 replace를 작성했다! 돌아가니까 성공!
3번 문제
처음에는 재귀로 풀었는데 9000대 부터 오버스택이 떴다.
왜 인지 생각해보았는데 return count + countClap(number-1);
하면 아예 맨 밑까지 갔다가 하나씩 반환화니까 오버스택이 뜨는 거였음
그래서 호출 부분을 아예 밖으로 빼서 구할때마다 값이 나오게 해서 오버스택을 피했다
결과적으로 이러나 저러나 시간복잡도는 n인듯?
4번 문제
A = 65
Z = 90
a = 97
z = 122
reverse 되는 애들끼리 더하면 항상 같은 값이라는걸 이용해서
아스키 코드로 풀어보았다.
5번 문제
가장 큰 값부터 하나씩 채로 거르듯 거르면
결국 다 되는 것을 이용해 if문으로 풀었음
이 문제가 젤 쉬웠다. 노가다 이지만?
6번 문제
input이 이중배열로 들어감(2차원배열)
forms.length는 몇명인지 나옴
name 각각 문자열 2개씩 끊어서 있는지 확인> set 사용함
set을 사용하는 이유는 집합이기 때문에 원소중복을 허용하지 않음
없으면 set 안에 포함시킴.
set안에 key가 있으면 경고대상이기 때문에 새로운 배열에 넣어준다
근데 만약에 이름이 제이제이 라서 첫 key인 제이가 set에 들어가는데 두번째 제이는 포함 안되면?
이경우는 어떻게 다루나 > set 두개 만들어!
처음 중복된 닉네임 사용한 크루는 그때 당시는 중복이 아니기 때문에 들어가지 않는다
따라서 다시 한번 첫번째 크루를 찾아줘야함.
set, sort 사용
7번 문제
sort함수안에는 사용자 정의함수를 넣을 수 있는데
사용자정의함수가 음수를 반환하면 정렬 안하고 아니면 정렬한다.
⭐온보딩 피드백⭐
요구사항을 정확히 준수한다
커밋 메시지를 의미 있게 작성한다
- 커밋 메시지에 해당 커밋에서 작업한 내용에 대한 이해가 가능하도록 작성한다.
git을 통해 관리할 자원에 대해서도 고려한다
Pull Request를 보내기 전 브랜치를 확인한다
- 기능 구현 작업은 기능 구현을 위해 새로 만든 브랜치에서 작업한 후 PR을 보낸다.
PR을 한 번 작성했다면 닫지 말고 추가 커밋을 한다
- PR을 이미 한 번 보냈다면, 새로운 PR을 생성할 필요가 없다. 수정이 필요하다면 추가 커밋을 하면 자동으로 반영된다.
이름을 통해 의도를 드러낸다
- 변수 이름, 함수(메서드) 이름, 클래스 이름을 짓는데 시간을 투자하라. 이름을 통해 변수의 역할, 함수의 역할, 클래스의 역할에 대한 의도를 드러내기 위해 노력하라.
축약하지 않는다
- 의도를 드러낼 수 있다면 이름이 길어져도 괜찮다.
공백도 코딩 컨벤션이다
- if, for, while문 사이의 공백도 코딩 컨벤션이다.
공백 라인을 의미 있게 사용한다
- 과도한 공백은 다른 개발자에게 의문을 줄 수 있다.
space와 tab을 혼용하지 않는다
- 들여쓰기에 space와 tab을 혼용하지 않는다.
의미 없는 주석을 달지 않는다
- 모든 변수와 함수에 주석을 달기보다 가능하면 이름을 통해 의도를 드러내고, 의도를 드러내기 힘든 경우 주석을 다는 연습을 한다
EOL(End Of Line)
- 최종 제출하는 코드에서 EOL을 확인한다. 환경에 따라 의도한 바와 다르게 개행 문자 처리가 되지 않도록 EOL 설정을 확인한다.
불필요한 console.log를 남기지 않는다
JavaScript에서 제공하는 API를 적극 활용한다
'우아한 테크 코스 회고 > 프리코스 후기' 카테고리의 다른 글
[우아한테크코스 5기 _ 프리코스 FE] 최종코딩테스트 후기 /점심메뉴추천 (0) | 2023.04.21 |
---|---|
[우아한테크코스 5기 _ 프리코스 FE] 4주차미션 후기/ 다리건너기 (0) | 2023.04.21 |
[우아한테크코스 5기 _ 프리코스 FE] 3주차미션 후기/ 로또 (0) | 2023.04.21 |
[우아한테크코스 5기 _ 프리코스 FE] 2주차미션 후기/ 숫자야구게임 (0) | 2023.04.21 |