본문 바로가기
대외 활동/우아한테크코스

[우테코] 프리코스 1주차

by eunsoa 2024. 10. 28.

이번 우테코 웹 프론트엔드 7기에 지원했다.

그리하여 프리코스 총 4주차에 참여하게 되었고, 매 주차 리뷰를 남길 계획이다.

 

우선 우테코 프리코스 1주차의 내용을 기록해보고자 한다.

 


 

 

 

✨ 과제 내용

과제 내용은 아래와 같다.


문자열 계산기

: 입력한 문자열에서 숫자를 추출하여 더하는 계산기 구현

  • 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환한다.
    • 예: "" => 0, "1,2" => 3, "1,2,3" => 6, "1,2:3" => 6
  • 앞의 기본 구분자(쉼표, 콜론) 외에 커스텀 구분자를 지정할 수 있다. 커스텀 구분자는 문자열 앞부분의 "//"와 "\n" 사이에 위치하는 문자를 커스텀 구분자로 사용한다.
    • 예를 들어 "//;\n1;2;3"과 같이 값을 입력할 경우 커스텀 구분자는 세미콜론(;)이며, 결과 값은 6이 반환되어야 한다.
  • 사용자가 잘못된 값을 입력할 경우 "[ERROR]"로 시작하는 메시지와 함께 Error를 발생시킨 후 애플리케이션은 종료되어야 한다.

 

 

 

✨ 과제 입출력 요구 사항

  • 입력
    구분자와 양수로 구성된 문자열
  • 출력
    덧셈 결과
     
  • 실행 결과 예시
  덧셈할 문자열을 입력해 주세요.
  1,2:3
  결과 : 6

 




✨ 문제 풀이 과정

1. 첫번째 난관

사용자 입력을 받아야하는데 안받고 그냥 꺼져버린다.

 

뭐가 문제이지?

알고봤더니 아래의 라이브러리 관련 조건을 제대로 안읽고 import도 안한채로 Console을 사용해서 난 문제..!

더보기

라이브러리
@woowacourse/mission-utils에서 제공하는 Console API를 사용하여 구현해야 한다.
사용자의 값을 입력 및 출력하려면 Console.readLineAsync()와 Console.print()를 활용한다.

 

바로 첫번째 import 문써주니 해결됐다 .. ㅎㅎ

너무 조급했던 듯 하다.

import { Console } from "@woowacourse/mission-utils";

 

 

 

 

2. 두번째 난관

구분자에 대한 명세의 조건이 더 명확하지 않아서 헷갈렸다.

현재 나의 경우 2자리 이상의 구분자를 받는 경우 각각 1자리의 다른 구분자로 처리되는데 이게 맞는지 확인할 방법이 없다.

 

 

 

3. 세번째 난관

app.js 를 실행하면 예외 처리의 경우 알맞게 출력된다.

반면에 테스트코드에서는 error 문이 출력되지 않는 걸로 나온다.

 

이 문제를 어떻게 해결할 수 있을까? "throw error; // 예외를 다시 던짐"를 추가하여 예외를 다시 던지게 되면 테스트코드 실행시에는 문제가 없지만, app.js 실행시 아래의 사진과 같이 예외를 다시 던짐으로 원하는 결과만 깔끔하게 출력이 되지 않는 문제가 있다.

 

나는 테스트 환경에서만 예외를 던지도록 코드를 수정했다.

// 테스트 환경에서는 예외를 다시 던짐
if (process.env.NODE_ENV === "test") {
	throw error;
}

 

그러나 내가 해결한 방법이 맞는지 의문이 든다.

 


 

 

 

 

✨ 최종 과제 제출

https://github.com/woowacourse-precourse/javascript-calculator-7/pull/449

✨ 구현 기능 목록  
1. 사용자 입력 처리
   - 콘솔을 통해 문자열을 입력받습니다.
   - "덧셈할 문자열을 입력해 주세요."라는 메시지를 출력 후, 문자열을 입력받습니다.

2. 기본 구분자 처리
   - 쉼표(`,`) 또는 콜론(`:`)을 구분자로 사용하여 숫자를 분리하고, 각 숫자의 합을 계산합니다.
   - 예시:
     * 입력: `"1,2,3"` -> 출력: `6`
     * 입력: `"1,2:3"` -> 출력: `6`

3. 커스텀 구분자 처리
   - 커스텀 구분자는 `//`와 `\n` 사이에 지정된 문자로 사용됩니다.
   - 입력된 커스텀 구분자를 기준으로 숫자를 분리하여 합을 계산합니다.
   - 예시:
     * 입력: `"//;\n1;2;3"` -> 출력: `6`

4. 에러 처리
   - 음수나 잘못된 형식이 입력될 경우 `[ERROR]`로 시작하는 에러 메시지를 출력합니다.
   - 예시:
     * 입력: `"-1,2,3"` -> 출력: `[ERROR] 잘못된 입력입니다. 숫자는 0 이상의 값이어야 합니다.`
     * 입력: `"//;\n1;-2;3"` -> 출력: `[ERROR] 잘못된 입력입니다. 숫자는 0 이상의 값이어야 합니다.`
     * 입력: `"//;\n1;2,3"` -> 출력: `[ERROR] 잘못된 구분자 형식입니다.`

5. 환경별 예외 처리
   - 테스트 환경(`NODE_ENV=test`)에서는 예외 발생 시 프로그램이 예외를 다시 던져 처리됩니다.
   - 실제 실행 환경에서는 예외 발생 시 에러 메시지만 출력하고 프로그램이 종료됩니다.

 

'대외 활동 > 우아한테크코스' 카테고리의 다른 글

[회고] 레벨2 1주차 회고  (1) 2025.05.03
[우테코] 프리코스 3주차  (3) 2025.01.26
[우테코] 프리코스 2주차  (0) 2025.01.26