관리 메뉴

기록하는 공간

우아한테크코스 7기 프리코스[BE] 1주차 회고: 오 쉬운데?(며칠 뒤) 아니구나.. 본문

회고

우아한테크코스 7기 프리코스[BE] 1주차 회고: 오 쉬운데?(며칠 뒤) 아니구나..

giwoong01 2024. 10. 24. 20:19

 

시험이 끝난 지금 나는 우아한테크코스 7기 프리코스 1주 차를 회고하려 한다.

 

프리코스 1주 차는 어땠나요?

고난과 역경. 시작부터 왜..?

대학생인 나는 시험과 함께 1주 차를 맞이했다.

1주 차 과제는 시험 하루 전인 화요일에 나오게 되었다. 수, 목 연속으로 시험을 보는 나에게 있어서 정말… 쉽지 않았다.

그래서 과제가 나오자마자 대충 한 번 문제를 읽어보고 “오 쉽다” 하고 시험에 집중했다.

(이때 잘못 생각했다… “오 쉽다”를 외치면 안 됐는데…)

 

그 주 시험이 끝나고…

아직 시험이 한 개 남았었지만, 즐거운 마음으로 1주 차 문제를 열었다.

문제를 읽으면 읽을수록 잘못됨을 느꼈다.

어..? 커스텀.. 구분자? 네? 머릿속에 여러 예외 상황들이 스쳐 지나갔다.

단순 문자열을 자르고 더하면 되는 문제인 줄 알았지만 자를 게 너무 많았다. 일단 생각을 멈추고 문제를 분석하기 시작했다.

 

문제 분석

실제로 1주 차 진행하면서 문제 정리를 할 때 분석한 부분을 가져왔다.

  • 입력한 문자열에서 숫자를 추출하여 더하는 계산기이다.
  • 입력은 구분자와 양수로 구성된 문자열이다.
  • 여기서 숫자는 구분자로 추출을 하게 되는데, 이는 기본 구분자와 커스텀 구분자로 추출한다.
  • 기본 구분자는 쉼표(,)와 콜론(:)이다.
    • 예) “1,2”, “1,2,3”, “1,2:3”
  • 커스텀 구분자는 “//”와 “\n” 사이에 위치하는 문자이다.
    • 예) “//;\n1;2;3” 이때 커스텀 구분자는 “;”이다.
  • 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException을 발생하고, 종료한다.

이 정도로 문제를 정리했다.

이렇게만 보면 금방 할 줄 알았는데, 입력상황에 대해 고민한 부분이 있었다.

 

고민 상황과 해결

첫 번째 고민)

  • 기본 구분자와 커스텀 구분자를 따로 사용할 수 있는 건 알겠는데, 함께 사용해도 될까?
    • 예를 들어, “//;\n1;2,3:4” 이와 같이 기본 구분자와 커스텀 구분자를 혼용해서 사용하는 입력상황이다. 미션에 정확히 명시되어있지 않아서 애매한 부분이었다. 하지만 혼용한다고 해서 문제가 생길 것 같진 않아서, 결과적으로는 혼용할 수 있게 구현을 했다.

 

두 번째 고민)

  • 문자열 중간에 커스텀 구분자를 지정할 수 있을까?
    • 예를 들어, “1,2:3,//;\n4;5”와 같이 문자열 중간에 커스텀 구분자가 있는 경우였다. 나는 당연히 되는 줄 알고, 자바의 contains() 메소드를 사용하여 커스텀 구분자를 인식할 수 있게 구현했다. 그렇게 구현이 끝… 난 줄 알았지만!! 문제를 다시 읽다 보니 코드에 문제점이 있다는 것을 인식했다. (문제 좀 똑바로 읽을걸..)
    • 문제의 기능 요구 사항에서 “커스텀 구분자는 문자열 앞부분의..~”와 같이 명시되어 있었다. 내가 지금까지 고민했던 입력 상황은 아무것도 아니게 되었다. 그래서 contains()에서 startsWith() 메소드로 변경하였다.

 

마무리

여러 고민과 함께 1주 차에서 요구하는 수준에 맞춰 최대한 구현했다. 그리고 지원서 4번에서 작성한 프리코스 목표인 1주 차부터 테스트 코드 작성하기를 실행에 옮겼기에 만족스러웠다.

 

그러나 시험과 병행하며 마무리하다 보니 개발에 100% 집중하지 못해 아쉬웠다. 특히 코드 리팩토링에 시간을 더 할애하지 못한 점이 아쉬웠기에 이렇게 회고를 남긴다.

 

다음 주차에서는 시간을 더 효율적으로 분배해서 시험과 개발에 모두 집중할 수 있도록 노력할 예정이다.

 

링크

> 코드: https://github.com/giwoong01/java-calculator-7/tree/giwoong01

> PR: https://github.com/woowacourse-precourse/java-calculator-7/pull/152