본문 바로가기

분류 전체보기172

[초록스터디] Spring MVC 회고 이번 Spring MVC 미션을 수행하면서 생각했던 점들을 적어볼까 한다.2단계1. 날짜 포맷은 어떻게 써야하는가?이번 문제에서 날짜와 시간을 저장하는 필드가 존재했다.- Java 8 이전에는 Data를 이용하여 날짜를 저장하였지만, Java 8 이후부턴 LocalDate, LocalTime, LocalDateTime을 이용- 날짜 포맷을 맞추기 위해 Reservation에서 @DataTimeFormat을 이용하여 포맷을 정했다.@DateTimeFormat(pattern = "yyyy-MM-dd")private LocalDate date;@DateTimeFormat(pattern = "HH:mm")private LocalTime time; Q. 날짜 타입 객체는 어떻게 만들지?처음에 당연히 이게 정상적으.. 2024. 5. 15.
[Java] 일급 컬렉션을 왜 사용할까? Collection을 Wrapping 하면서, 그 외 다른 멤버 변수가 없는 상태 이번 로또 문제를 풀면서 맞이했던 문제들을 살펴보자. 1.  Validation 처리LottoNumber는 List numbers를 wrapping하는 일급 컬렉션이다.numbers는 6개의 중복되지 않는 숫자만 포함해야 한다. 일급 컬렉션의 개념을 이해하기 전엔, "입력 시 Validation 처리해야 하는가?" 라는 고민을 했다. View 차원에서 "입력받는 값에 최소한의 유효성 검증을 진행한다." 의 규칙이 존재하기 때문에 상관이 없을 것이라 생각했다.MVC Pattern에서의 유효성 검사 (velog.io) MVC Pattern에서의 유효성 검사책임 전가 패스velog.io 그런데 조사를 더 해보니 일급 컬렉션은 이.. 2024. 5. 5.
BOJ 18291 - 비요뜨의 징검다리 건너기 18291번: 비요뜨의 징검다리 건너기 (acmicpc.net) 접근 방법도저히 감이 안잡혀서 점근식으로 접근해보았다. N=3 인 경우21 1 N=4 인 경우32 11 21 1 1 N=5 인 경우4 3 1 1 3 2 1 1 1 2 1 1 1 2 2 2 1 1 1 1 2 -> 4 -> 8 -> ...2의 제곱 형태로 나아간다고 생각하여2의 N-2 승을 이용하니 맞았다. 더 자세한 설명은 아래 참고 블로그를 확인해보자.  코드#include #include #include #define ll long longusing namespace std;ll t, n;ll mod = 1000000007;void powFunc(ll a, ll b) { ll res = 1; while(b) { if (b % 2 != 0.. 2024. 5. 1.
[수학] 분할정복을 이용한 거듭제곱 수학적 정의를 이용하여 거듭제곱을 하는 방법이다.기존 거듭제곱의 경우, 모두 곱하기 때문에 O(N)의 시간이 걸리지만,분할정복을 이용하면 O(LogN)에 결과 도출이 가능하다. 그냥 단순하게 2, 3등분하여 한방에 구한다는 뜻이다. 재귀함수와 반복문 두 가지 방법으로 구현이 가능하다. 반복문의 경우 코드를 먼저 보자.void powFunc(int a, int b) { int res = 1; while(b) { if (b % 2 != 0) { res *= a; } a *= a; b /= 2; } cout - 2, 3 등분으로 나누기 위해 b가 1이상일 동안 이루어진다.- 만약 홀수인 경우, (위 식 그림에서) 마지막에 C가 추가적으로 곱해지기 때문에, 초기에 곱한다.- 짝수의 경우, 마지.. 2024. 5. 1.
MVC 패턴 정의 및 규칙 기본 정의관심사에 따라 비즈니스 로직과 화면을 분리 모델 : 데이터와 비즈니스 로직 관리뷰 : 레이아웃과 화면 처리컨트롤러 : 모델과 뷰로 명령 전달 사용 이유1. 관심사 분리2. 각자의 역할이 구분되어 있어 서로간의 결합도를 낮출 수 있음3. 분리되어 있기에 코드의 재사용성 및 확장성 높음4. 변경 필요 부분 쉽게 파악 가능하여 유지보수 및 테스트 용이5. 협업 시, 커뮤니케이션 효율성 높음 -> 코드 충돌 방지 가능 한계점- Model과 View의 의존성 완전 분리 힘    - 하나의 컨트롤러에 여러 개의 Model과 View가 엉키게 되어 의존성이 커- 컨트롤러의 부담이 커짐 (Massive-View-Controller 현상) 모델SW, APP에서 정보 및 데이터 부분Controller에게 받은 데.. 2024. 4. 30.
BOJ 3109 - 빵집 3109번: 빵집 (acmicpc.net) 접근방법이번 문제는 그래프 탐색을 통해 오른쪽, 오른쪽 대각 위, 오른쪽 대각 아래 이렇게 총 3가지로 이동하며 마지막 열에 도달하는 문제이다.이 과정에서 발생하는 문제는 다음과 같다. 1. 어떻게 하야 가장 많은 파이프가 지나갈 수 있도록 배치할 수 있을까?2. 도착점까지 연결하는 파이프는  하나여야 한다. 먼저 1번부터 해결해보자.예제 1번을 보자 5 5.xx....x..........x....x. 여기서 0,0 에서 출발한 파이프 라인은 최대한 위쪽을 붙어서 이동해야 한다. 5 51xx.1.1x1...1.....x....x.이런게 1의 경로를 따라 이동해야 하므로, 움직이는 순서는 -1, 0 ,1 이어야 한다. (중요) 이제 2번째 문제인 "도착점까지 연결.. 2024. 4. 30.