코드스테이츠17 최고의 팀워크는 실력에서 오는게 아니다 - 후즈북 프로젝트 회고 📖 프로젝트 기간: 23/06/28 ~ 23/07/27 📖 프로젝트 이름: 후즈북 (추천 기반 도서 큐레이션 서비스) 후즈북 프로젝트가 끝났다. 처음으로 기획부터 배포 및 데모데이까지 완료한 프로젝트 다운 첫 프로젝트였다. 기술적인 부분은 차차 별도의 블로깅으로 하고, 회고에서는 우리 팀에 대해, 그리고 개인적인 소감을 말해보고자 한다. 👏 Keep 1. 열정과 책임감이 강한 팀원들이 모여 업무 분담도 잘 되었던 점 일단 우리 팀은 프로젝트에 대한 열정과 의욕, 책임감이 강했고 이에 따라 프론트엔드, 백엔드 각자 업무 분담이 잘 된 편이었다. 아마 첫 단추를 잘 끼워서가 아닐까 싶다. 팀원을 모으고 어떤 서비스를 할지 이야기한 것이 아니라, 만들고자 하는 서비스를 먼저 기획해서 팀원들을 모집했기 때문이다.. 2023. 7. 31. 멘탈이 나가도 다시 돌아왔다 - 부트캠프 4개월차 회고 👏 Keep 1. 매일 루틴을 지키고 회고하는 습관 매 Section마다 그렇듯, 이번 Section 4에서도 종종 멘탈이 꺾인 적이 있었다. 특히 솔로 프로젝트 때 실력이 적나라하게 드러나며 좌절을 경험했다. 하지만 그때마다 나 자신을 정면으로 마주하며 다시 달려야지 하며 다짐할 수 있었던 건 회고하는 습관 덕분이었고, 처지지 않고 일어날 수 있었던 건 그럼에도 지켜야 하는 루틴 덕분이었다. 공부가 메타인지를 기반으로 해야 잘할 수 있는 것처럼, 삶을 살아갈 때도 나의 감정과 생각을 잘 읽어내는 메타인지가 필요하다는 것을 실감하는 요즘이다. 2. 잘하고 좋아하는 것을 결합하며 공부하는 것 나는 내가 잘하고 좋아하는 것을 명확하게 안다. 그러니 아직 잘하지 못하는 개발이라는 영역을 잘하는 것과 결합해, .. 2023. 6. 8. 현재에 집중하며 차근차근 나아가기 - 부트캠프 3개월차 회고 👏 Keep 1. 꺾였을 때 외부 자원을 활용하는 것 혼자 온라인으로 공부를 하다 보면 꺾일 때가 많다. 의지가 꺾이거나, 초심이 꺾이거나, 자신감과 실력이 꺾인다. (Section3 정도면 꺾일 때가 되기도 했다..) 그럴 때는 최대한 외부 자원을 활용해 왔다. 집중이 안 되는 시간에는 침대로 뛰어들 나를 잘 알기에, 모각코 방에서 캠을 켜놓고 공부했다. 초심이 꺾였을 때는 정규 수업 시간 이후에 최소한의 학습만 하고 푹 쉬거나, 개발자 친구에게 요즘 공부를 어떻게 하고 있는지, 어떤 마음가짐인지 털어놓으며 중간중간 점검하기도 했다. 그 외에는 리액트와 자바스크립트 강의와 책을 적절히 잘 활용하면서 지금까지 배웠던 개념들에 대해 복습하고, 나만의 웹 사이트를 만들어보며 자신감과 실력이 충전되기도 했다... 2023. 5. 9. 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴하기 📜 문제 문자열을 입력받아 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 (숫자와 공백을 제외한 나머지) 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴해야 합니다. ⚠️ 주의사항 - 빈 문자열을 입력받은 경우, 0을 리턴해야 합니다. - 숫자(digit)는 연속해서 등장하지 않습니다. ✍🏻 내 풀이 function numberSearch(str) { // 입출력 예시 // 'Hello6 9World 2,' // 숫자: 6+9+2 = 17, 문자열 길이: 10 (숫자 공백 제외) // 17 / 10 = 1.7 -> 반올림해서 2 // 예시 숫자를 선언 const digits = '0123456789'; // 만약 str이 빈 문자열이라면 if (str === '') { // 0을 리턴 return .. 2023. 4. 25. 죽음의 계곡에 있는건, 결국 성장하기 위함 - 부트캠프 2개월차 회고 👏 Keep 1. 건강한 식습관 1개월 차 때와 마찬가지로, 건강한 식단을 규칙적으로 먹는다. 끼니를 거르면 간식을 많이 먹게 된다는 것을 알기 때문에 의식적으로라도 끼니를 든든하게 챙겨 먹는 것이 중요하다. 여전히 나를 위해 음식과 재료를 준비해 주시는 엄마, 외식 겸 드라이브를 시켜주시는 아빠께 정말 감사하다. 혼자 해 먹는다면 시간과 비용 모두 소모되었을 텐데 본가에서 해주시는 게 얼마나 감사한 일인지 실감한다. 2. 남과 비교하지 않고 꿋꿋하게 나아가는 자세 아직까지 전체적으로 평안한 상태를 유지하며 공부하고 있다. 20대 초중반의 취업 준비 때보다는 확실히 여러 번의 취준과 이직을 겪어왔다보니 미래를 향한 불안은 그렇게 크지 않다. 크고 작은 실패와 성취를 어느 정도 겪다 보니 걱정하는 만큼의 .. 2023. 4. 10. 아이소그램인지 여부를 리턴하기 📜 문제 문자열을 입력받아 아이소그램인지 여부를 리턴해야 합니다. 아이소그램(isogram)은 각 알파벳을 한번씩만 이용해서 만든 단어나 문구를 말합니다. ⚠️ 주의사항 - 빈 문자열을 입력받은 경우, true를 리턴해야 합니다. - 대소문자는 구별하지 않습니다. ✍🏻 내 풀이 function isIsogram(str) { // 대소문자 구분을 없애기 위해 문자를 소문자로 바꿔주는 새로운 문자를 할당하는 변수 let newStr = str.toLowerCase(); // true와 false를 나타낼수 있는 result변수를 선언 let result = true; // str의 길이가 0이면 if(str.length === 0){ // result = true를 반환 return result; } for.. 2023. 4. 5. 클라이언트의 액션에 따라 각기 다른 HTTP 요청을 서버로 보내고, HTTP 요청에 담아 보낸 단어를 소문자 또는 대문자로 응답을 받아 화면에 보여 주기 📜 Bare minimum requirements 클라이언트의 액션(버튼 클릭)에 따라 각기 다른 HTTP 요청을 서버로 보내고, HTTP 요청에 담아 보낸 단어를 소문자 또는 대문자로 응답을 받아 화면에 보여 줍니다. 💡 조건 Endpoint(URL) Method 기능 /lower POST 문자열을 소문자로 만들어 응답해야 합니다 /upper POST 문자열을 대문자로 만들어 응답해야 합니다 - POST에 문자열을 담아 요청을 보낼 때는 HTTP 메시지의 body(payload)를 이용합니다. - 서버는 요청에 따른 적절한 응답을 클라이언트로 보내야 합니다. - CORS 관련 헤더를 OPTIONS 응답에 적용해야 합니다. - 클라이언트의 preflight request에 대한 응답을 돌려줘야 합니다. .. 2023. 4. 4. num1을 num2로 나눈 나머지를 리턴하기 📜 문제 두 수(num1, num2)를 입력받아, num1을 num2로 나눈 나머지를 리턴해야 합니다. ⚠️ 주의사항 - 나눗셈(/), 나머지(%) 연산자 사용은 금지됩니다. - 0은 어떤 수로 나누어도 나머지가 0입니다. - 어떤 수도 0으로 나눌 수 없습니다. 이 경우 'Error: cannot divide by zero'를 리턴해야 합니다. ✍🏻 내 풀이: for문 사용 function modulo(num1, num2) { let result = 0; // 만약 num2가 0이면 if (num2 === 0) { // 'Error~'를 리턴 return 'Error: cannot divide by zero' } // num2 * i = num1 for (let i = 0; i < num1; i++) .. 2023. 4. 4. 각 요소들이 그 이전의 요소들의 합보다 큰지 여부를 리턴하기 📜 문제 수를 요소로 갖는 배열을 입력받아 각 요소들이 그 이전의 요소들의 합보다 큰지 여부를 리턴해야 합니다. ⚠️ 주의사항 - boolean 타입을 리턴해야 합니다. - arr[i]는 arr[0]부터 arr[i-1]까지의 합보다 커야 합니다. ✍🏻 내 풀이 function superIncreasing(arr) { // 초기값 설정 let sum = arr[0]; // 1번째 인덱스부터 반복해서 더해주다가 for (let i = 1; i < arr.length; i++) { // sum이 다음 인덱스보다 크거나 같다면 if (arr[i] 2023. 3. 31. 2차원 배열에서 특정 문자열의 위치정보를 요소로 갖는 배열 리턴하기 📜 문제 2차원 배열(배열을 요소로 갖는 배열)을 입력받아 'B'의 위치 정보를 요소로 갖는 배열을 리턴해야 합니다. ⚠️ 주의사항 - arr, arr[i]의 길이는 다양하게 주어집니다. - 항상 한 개의 문자열 'B'가 존재합니다. ✍🏻 내 풀이 function findBugInApples(arr) { // 문자열의 행을 순회 for(let i = 0; i < arr.length; i++) { // 문자열의 열을 순회 for(let j = 0; j < arr[i].length; j++) { // 해당 행열에 B가 있다면 if (arr[i][j] === 'B') { // 인덱스 리턴 return [i, j]; } } } } 💡 알아두면 좋을 개념 중첩 반복문 (중첩 for문)을 활용 for(let i =.. 2023. 3. 29. 연속된 한자리 홀수 숫자 사이에 - 를 추가한 문자열을 리턴하기 📜 문제 문자열을 입력받아 연속된 한자리 홀수 숫자 사이에 '-'를 추가한 문자열을 리턴해야 합니다. ⚠️ 주의사항 0은 짝수로 간주합니다. ✍🏻 내 풀이: parseInt( )로 정수 반환 function insertDash(str) { let newStr = str.charAt(0); // 문자열 순회 후 인덱스 단위로 쪼개기 for(let i=1; i 2023. 3. 27. 문자열에 등장하는 두 칸의 공백을 모두 한 칸의 공백으로 바꾼 문자열을 리턴하기 📜 문제 문자열을 입력받아 해당 문자열에 등장하는 두 칸의 공백을 모두 한 칸의 공백으로 바꾼 문자열을 리턴해야 합니다. ⚠️ 주의사항 - 두 칸을 초과하는 공백은 존재하지 않는다고 가정합니다. ✍🏻 내 풀이 : 직전 공백 여부 판단하는 변수 선언 function convertDoubleSpaceToSingle(str) { // 빈 문자열을 입력받은 경우, 빈 문자열 리턴하는 결과값 선언 let result = ''; // 각 문자 직전 공백 여부 판단하는 변수 선언 let beforeSpace = ''; // for loop로 해당 문자열 길이만큼 순회해서 for (let i = 0; i < str.length; i++) { // 직전 문자가 공백이고, 현재 문자도 공백인 경우 (즉, 현재 문자가 두 .. 2023. 3. 23. 이전 1 2 다음