[우아한 테크코스 백엔드 5기]프리코스 1주차 미션 "온보딩"

SJ H·2022년 10월 31일
1

우아한 테크코스

목록 보기
1/5
post-thumbnail

🎯미션 - 온보딩

🚀 기능 요구 사항

아래의 7가지 기능 요구 사항을 모두 해결해야 합니다.

프리코스 1주차 미션 링크
작성한 코드 링크

문제 1 - 📖포비와 크롱이 책 펼치기 게임을 하는 문제(책은 1-400 페이지)

  • 책을 펼쳐 왼쪽, 오른쪽 페이지의 각 자리 숫자를 모두 더한 것, 곱한 것 중 큰 하나를 본인의 점수로 함
  • 점수를 비교해 가장 높은 사람이 게임의 승자

문제 2 - 🤓괴짜 개발자 브라운의 암호를 해독하는 문제

  • 주어진 암호문을 확인하며 앞, 뒤 문자가 같다면 두 문자를 지워야함
  • 중복되는 문자를 모두 지워 결과를 반환해야 한다.

문제 3 - 😆배달이와 369게임을 하는 문제

  • 1부터 숫자를 하나씩 대면서, 3,6,9,가 들어가면 3,6,9의 개수만큼 손뼉을 쳐야한다.
  • 숫자 하나가 주어질 때, 그 숫자까지 369 게임을 진행하며 손뼉을 몇 번 쳤는지 횟수를 반환해야 한다.

문제 4 - 🐸어무니의 말을 무조건 반대로 말하는 청개구리 문제

  • 각각의 알파벳이 어떤 알파벳으로 변환되는지 청개구리 사전이 주어진다. ex) A -> Z, P -> K
  • 위 사전을 토대로, 주어진 단어를 청개구리어로 변환해서 반환해야 한다.

문제 5 - 🏦계좌에 들어 있는 돈을 출금해야하는 문제

  • 지갑이 최대한 가볍도록 큰 금액부터 나눠줘야 한다. ex) 24500 -> 만원 2개, 천원 4개, 오백원 1개
  • 돈의 액수가 주어질 때, 각각 몇 개의 화폐로 변환되는지 금액이 큰 순서대로 리스트에 담아 반환해야 한다.

문제 6 - ❗️우테코 크루들의 중복 닉네임을 찾아 경고해주는 문제

  • 크루들의 이름 중 같은 글자가 연속적으로 포함될 경우(중복될 경우) 그 닉네임을 신청한 크루들에게 경고!
  • ('이메일','이름')을 하나의 원소로 가지는 배열 forms가 주어졌을 때, 중복 글자를 확인해서 경고 크루들의 이메일을 배열로 반환해야 한다.

문제 7 - 👍친구 추천 알고리즘을 구현하는 문제

  • 사용자와 함께 아는 친구(유저의 친구의 친구)는 10점, 유저의 타임라인에 방문한 횟수당 1점을 추천 점수로 반영한다.
  • 유저의 아이디, 친구 관계 정보, 타임 라인 방문 기록을 제공해준다.
    • 위의 추천 규칙에 따라 점수가 가장 높은 순으로 정렬한다.
    • 최대 5명 까지 추천해줄 수 있기 때문에, 최종적으로 최대 5명의 친구 리스트를 반환해야 한다.

📑구현 기능 목록

1-7번의 구현 기능 목록
문제당 구현 기능 목록이 다르기 때문에, 링크로 첨부했습니다!
{문제}FEATURELIST.md를 확인하시면 됩니다.

🪶후기

📚지키려 노력 했던 원칙

  1. IntelliJ IDEA를 사용, java 버전 11으로 세팅하여 사용했습니다.
  2. 커밋 메세지 컨벤션을 지키려 노력했습니다.
    • 초반부엔 "타입(스코프): 내용" 형식을 몰라 지키지 못했지만, 후반에는 지키려 노력했습니다.
    • 스코프를 비워둔 이유는, 미션이 문제 7개 였기에 그에 맞춰 변형해 작성했습니다
  3. docs폴더의 PROBLEM1~7.md에서 요구한 기능을 구현할 때마다 커밋하여 기록했습니다.
    • 기능 단위로 커밋하는 것이 원칙이기에, 하나의 작은 기능을 구현할 때마다 커밋하려 노력했습니다.
    • 실행만 되게끔 구현한 이후엔 하나의 기능을 리팩토링할때마다 남겼습니다.
  4. indent = 1를 벗어나지 않도록 노력했습니다.
    • 특히'중복 for문'을 최대한 안 쓰도록 리팩토링 했습니다.
    • 안타깝게도 모든 메서드에서 지키진 못했습니다.
  5. 클린코드를 만들기 위해 노력했습니다.
    • 메소드 당 기능 하나를 지킬 수 있게 메서드 분리를 했습니다.
    • 메서드·변수명을 축약없이, 이름만 보고도 어떤 기능인지 알 수 있게 적었습니다.
    • else·switch를 쓰지 않았습니다.
    • 주석을 쓰지 않았습니다.

회고

1주차는 단순한 문제 풀이였지만, 지금까지 해온 것과 사뭇 다른 경험이었습니다.

슬랙을 통해 서로의 의견을 공유, 질문하는 등, 모두 활발하여 1주차 내내 혼자 하는 느낌이 아니었습니다. 다양한 분들과 소통할 수 있어 좋았던 것 같아요.

성장을 하고 싶어하는 분들을 위한 우테코의 배려가 느껴졌습니다.

1주차는 단순한 알고리즘 문제를 과제로 내주셨는데, 엄청 어려워서 처음 하는 사람은 못 풀겠다!! 는 난이도는 없었던 것 같아요. 일주일이란 기간을 준 만큼, 이번 기회를 통해 git, 배우고자 하는 언어의 기초를 쌓는데 많은 도움이 됬을 것 같습니다.

기존의 문제 풀이와 다르게 위의 원칙들을 지키려 하니 어려웠습니다.

사실 우테코에서는 저런 원칙들을 정해준 적이 없지만, 미리 경험해보고자 적용해봤습니다. 당장 다음주부터 적용되는 규칙들을 일부 적용하여 리팩토링을하니, 오히려 문제 풀이보다 시간이 더 걸렸습니다..

메서드, 변수명을 신중하게 짓고, indent가 1이 안된다면 혹시 두 가지의 기능을 수행하는게 아닐까? 의심하고 메서드 분리를 했습니다. 덕분에 대충 이름만 보고도 어떻게 코드가 실행되는지 설명이 쉬웠습니다.

결론적으로, 다음 주가 기대되는 1주차였습니다.

슬랙이 활발하다보니 사람들과 여러 주제를 가지고 소통할 수 있는 점이 좋았습니다. 의견을 공유하고 리팩토링을 거치며, 아직 배워야 할 게 많다고 느낀 1주차였습니다.

profile
하하

0개의 댓글