diff --git "a/week1/[1\354\243\274\354\260\250] \354\213\254\354\235\264\355\230\204 \352\263\274\354\240\234.md" "b/week1/[1\354\243\274\354\260\250] \354\213\254\354\235\264\355\230\204 \352\263\274\354\240\234.md" new file mode 100644 index 0000000..ca11f37 --- /dev/null +++ "b/week1/[1\354\243\274\354\260\250] \354\213\254\354\235\264\355\230\204 \352\263\274\354\240\234.md" @@ -0,0 +1,42 @@ +## www.google.com 을 치면 일어나는일 +Keywords : DNS, TCP/IP프로토콜, WS, WAS + +1. DNS 서버에서 도메인 주소를 IP주소로 변환 +2. IP 주소를 알게 되면 TCP/IP를 통해 데이터를 주고 받기 위한 연결을 함 +3. HTTP의 요청을 보내면 WS에서 요청을 받고 응답함 +4. 만약 WS에서 처리할 수 없는 요청을 보낼 경우 WAS에서 로직 수행 + +--- + +## API, HTTP통신 + +- API: 애플리케이션이 상호작용할 수 있도록 프로그래밍 하는 것. HTTP 요청을 서버에 보냈을 때 실행됨. +- HTTP 통신: 컴퓨터 간에 텍스트 데이터를 주고 받는 길, 요청 및 응답 가능 + +--- + +## 백엔드가 하는 일 +사용자 눈에 보이지 않는 서버에서 데이터를 관리하거나 로직을 설계하는 역할 + +--- + +## 객체지향 특징 및 장점 +프로그램을 객체 간의 상호작용으로 만듦 +(*객체란 메소드와 변수를 가지고 특정한 역할을 수행함) + +유지보수가 쉽고 재사용성이 좋음 + +--- + +## 코드 컨벤션이란 +코드 작성할 때 지켜야하는 공통 규칙과 가이드라인 + +--- + +## MVC 패턴 +어플리케이션의 역할을 세 가지로 나눠서 관리하는 방식 +- Model: 데이터와 로직 당담 +- View: UI +- Controller: 사용자의 요청을 처리하고 흐름을 제어 + +--- \ No newline at end of file diff --git "a/week1/[1\354\243\274\354\260\250] \354\213\254\354\235\264\355\230\204.md" "b/week1/[1\354\243\274\354\260\250] \354\213\254\354\235\264\355\230\204.md" new file mode 100644 index 0000000..34d2a55 --- /dev/null +++ "b/week1/[1\354\243\274\354\260\250] \354\213\254\354\235\264\355\230\204.md" @@ -0,0 +1 @@ +안녕하세요 저는 심이현입니다 \ No newline at end of file diff --git "a/week2/[2\354\243\274\354\260\250] \354\213\254\354\235\264\355\230\204 \352\263\274\354\240\234.md" "b/week2/[2\354\243\274\354\260\250] \354\213\254\354\235\264\355\230\204 \352\263\274\354\240\234.md" new file mode 100644 index 0000000..49e9ac2 --- /dev/null +++ "b/week2/[2\354\243\274\354\260\250] \354\213\254\354\235\264\355\230\204 \352\263\274\354\240\234.md" @@ -0,0 +1,51 @@ +# 학습한 내용 +- Console.readLine(): Scanner를 사용하면 가짜 입력값을 주입하기 어렵다는 문제가 있다는 것을 알게되었고, +테스트 용이성을 고려한 설계의 중요성을 학습했다. +- Randoms.pickUniqueNumbersInRange(min, max, count): 지정된 범위 내에서 중복되지 않는 무작위 숫자를 추출 +- Enum: 연관된 상수들을 그룹화하여 관리한다. 코드의 가독성과 유지보수성을 높일 수 있다. +- EnumMap: Enum을 키로 사용할 때 메모리 효율과 성능이 가장 뛰어나다는 것을 알게 되었다. + if-else를 사용하지 않고도 깔끔하게 통계를 낼 수 있다는 점에서 HashMap과 차이가 있다는 것도 알게되었다. + +--- + +# 고민했던 점 +함수 하나가 한 가지 일만 하고 15줄을 넘기지 않도록 하기 위해 메서드를 분리하려고 노력했다. +확실히 책임을 분리하니까 단위 테스트를 더 쉽게 할 수 있었던 것 같다. +s +--- + +# 아쉬운 점 +기능 단위로 커밋을 하지 않았다는 것을 뒤늦게 확인했다. +기능 단위로 커밋을 하지 않으면 변경 이력을 추적하기 어렵고, +특정 기능에서 발생한 문제의 원인을 파악하는 효율이 떨어진다는 문제가 있다는 걸 다시 한 번 인지했으니, +앞으로 있을 과제에선 기능 단위 커밋을 잊지 않고 하는 습관을 들이고 싶다 +요구 사항에 맞춰 직접 코드를 설계해본 경험이 부족해서 너무 뒤쳐지는 것 같다는 생각이 들었다. +내가 이해하고 있는 내용이 맞는지 제대로 사용하고 있는 게 맞는지 확신이 없어서 어려웠다. + +그래도 요구 사항에 맞춰 문제를 해결해 나가는 즐거움을 알게 되었다. +부족한 점을 인지한 만큼 다음 세션에서는 조건을 더 잘 지켜 더 나은 구조를 설계해보고 싶다. + +--- + +# 기능 +### 입력 +- 구입 금액 입력 + - 1000단위로 입력 받음, 예외시 에러 메시지 출력 + - Console.readLine() 이용 +- 당첨 번호 입력 + - 쉼표 기준 6개 +- 보너스 번호 입력 + - 당첨 번호와 중복X + +### 로또 발행 및 관리 +- 구입 금액에 맞는 개수만큼 로또 발행 + - Randoms.pickUniqueNumbersInRange(min, max, count) 이용 + - 오름차 순으로 로또 번호 정렬 및 저장 +- 중복 검증 + +### 당첨 확인 +- 당첨 등수 판별 + - 일치 숫자 개수를 비교해 판별 + - enum +- 수익률 계산 +