일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코드잇 Python 풀스택 개발자
- 백준 문제 출제
- 수행 시간
- 코딩테스트준비
- 개발자취업
- cout.precision
- 티스토리챌린지
- 7기
- 코드잇 JavaScript 프론트엔드 개발자
- 백준 1000문제
- 리뷰어
- 스트릭
- 코드잇 강의
- timeval
- 소수점 출력
- 프리코스
- 오블완
- 99클럽
- 백준 스트릭
- 길벗
- 파이썬
- 백준
- 개발자
- 항해99
- solved.ac
- 우테코
- Til
- 우아한테크코스
- fixed
- 코드잇
- Today
- Total
BE THE DEVELOPER
10월 17일: 코드의 목표 설정 및 실제 코드 작성하기 본문
오늘은 이번 프리코스 1주차 코드를 짜기 전, 확실한 목표를 잡아두고 짜려고 한다. 내가 어떤 코드의 목적을 갖고 짜야하는지, 명확한 방향성을 잡아두어야 추후 코드를 짜거나 테스트를 할 때 어려움이 생기지 않을 듯하다.
코드의 목표
명세서에 적힌 내용 외에는 모두 내가 임의로 판단하여 짤 수 있다. 즉, 내가 어떻게 코드를 짜야겠다고 결정하는 절차가 중요하다는 생각이 든다.
기본적으로 명세서에 적힌 내용에 먼저 적응하자고 생각했다.
기능 요구사항
기본적인 구분자인 쉼표,와 콜론:으로 문자열을 분리하고, 각 숫자의 합을 반환해야 한다. 즉 구분자들이 더하기 기호와 같은 역할을 한다고 생각하면 될 듯하다.
또한 두 기호 외에도 커스텀 구분자를 지정할 수 있다. //와 \n사이에 위치하는 문자가 커스텀 구분자가 된다고 한다.
마지막으로 사용자가 잘못된 값을 입력했을 때는 [ERROR]로 시작하는 메시지와 함께 에러 처리를 해야한다고 한다. 사실 에러 호출하는 방법은 아직 몰라서 알아봐야 한다.
기능을 구현할 때 고려해야 할 것들을 정리했다.
예시에 나와있는 것처럼 아무런 입력이 없을 경우에는 0을 출력해야 한다. 아무래도 가장 중요한 부분은 구분자를 중복해서 사용했을 때와, 구분자가 아닌 문자가 등장했을 경우, 숫자가 구분자로 사용될 경우, 이미 사용된 구분자가 또 커스텀으로 선언될 경우 등 다양하다.
아래는 내가 고려해본 특이 또는 오류 케이스이다.
- 구분자를 중복해서 사용했을 경우
- 구분자가 아닌 문자가 구분자로 사용됐을 경우
- 커스텀 구분자를 //로 선언 시작했으나 마무리가 안됐을 경우
- 숫자가 커스텀 구분자로 선언됐을 경우
- 이미 사용한 구분자가 또 커스텀 구분자로 선언됐을 경우
- 소수가 이용될 경우, 또한 .이 커스텀 구분자가 될 경우
- e를 이용한 숫자 표현법이 사용됐을 경우, 또한 e가 커스텀 구분자가 될 경우
- 10진수가 아닌 다른 진수가 사용됐을 경우, 또한 해당 진수를 표현하는데 쓰인 문자가 커스텀 구분자가 될 경우
- 커스텀 구분자가 \n로 선언됐을 경우
- 커스텀 구분자를 여러 번 선언할 경우
- 커스텀 구분자에 문자가 아닌 문자열이 선언됐을 경우
어떤 프로그램을 구현할 것인가
이 프로그램의 본질을 최우선적으로 떠올리고자 했다. 위와 같은 특이 케이스를 처리하기 위해서는 본질을 꿰뚫는 무언가가 존재해야 한다고 생각했다. 개인적으로 결국 이 프로그램의 본질은 문자열을 분리하여 더한 값을 구하는 것이다.
따라서 함수로 분리하여 프로그램을 “문자열”을 분리하기 전 전처리하는 함수, 실제로 “분리”하는 함수, 값들을 “더하는” 함수를 짜야겠다고 구상해보았다. 완전 상세한 내용은 아니지만 이정도에서 발전시켜나가야 한다.
문자열을 전처리하는 함수
특이 케이스들을 보면 사실 실제로 문자열을 분리하고 더하는 과정을 거치기 전에서부터 오류를 찾아낼 수 있는 경우가 있다. 따라서 실제로 분리하다가 문제를 마주치지 않게 하기 위해 전처리하는 과정을 거치려 한다.
문자열의 경우는 크게 커스텀 구분자가 사용됐는지 아닌지로 우선적으로 구분할 수 있을 듯하다. 커스텀 구분자가 사용됐을 경우에는 고려해야할 부분이 늘어나기도 하고, 문자열이 생긴 형태가 크게 달라지기 때문이다.
여기서는 기본적인 형식에 문제가 있는 등의 오류를 찾아내는 역할을 한다.
문자열을 분리하는 함수
문자열 전처리를 완료했다면 어떤 커스텀 구분자를 사용할 수 있는지 등을 따로 저장하여 넘겨주고, 전처리를 완료하여 커스텀 구분자 선언부를 제외한 부분만 남겨진다.
해당 문자열에서 이제 숫자를 표현하는 부분과 구분자를 표현하는 문자를 분리해낼 필요가 있다. 구분자는 모두 더하기 기호대신 사용됐기에 큰 문제가 없다. 다만 어떤 커스텀 구분자였냐에 따라 더하는 과정에서 문제가 생길 수 있다. 예를 들어 소수가 사용되었는데 커스텀 구분자가 .일 경우, 혹은 다른 진수를 이용했을 경우가 특히 그렇다.
숫자를 더하는 함수
사실 숫자를 더하는 함수의 경우, 오류가 발생할 가능성은 없다. 다만 여러 종류의 진수법이 이용된 경우 진수를 맞춰주는 과정을 할 필요가 있긴하다. 이건 10진수로 맞춰준다고 임의로 결정해도 될듯하다. 또한 숫자가 없을 경우의 처리도 여기서 더하며 처리해야하지 않나 싶다.
문자열 대치 메소드를 이용할까
커스텀 구분자가 문자라는 조건이 있으므로 구분자들을 모두 +로 바꿔버리면 단순하게 계산이 가능하지 않을까하는 생각이 들긴하다. 이 내용은 직접 실천해봐야 알 수 있을 듯하다.
'일기장 > 우아한테크코스 7기' 카테고리의 다른 글
10월 19일: 문제 정의하고 README.md 작성하기 (1) | 2024.11.02 |
---|---|
10월 18일: 주어진 라이브러리를 분석하고 코드 짜기 (0) | 2024.11.01 |
10월 16일 (2): JS 컨벤션에 조금 더 익숙해져보자 (1) | 2024.10.30 |
10월 16일 (1) : Git을 제대로 알고 이용하자 (1) (1) | 2024.10.30 |
10월 15일: 우테코 서비스 둘러보기, 목표 설정하기 (9) | 2024.10.29 |