개발지식 먹는 하마 님의 블로그
[사전캠프 13일차] _ 이분 탐색 문제 / 가계부 프로젝트 2일차 본문
- Java 전공책 복습을 이어갔다.
오버라이딩 부분을 공부했다. - 동적 탐색법 문제를 풀려고 했는데 이분 탐색을 알아야 했다.
이분탐색을 공부하고 관련 문제를 하나 풀어본 후, 해당 문제 풀이를 완료했다. - 가계부 프로젝트를 진행했다.
정말 나만 쓰려고 했는데, 프로젝트 개발 이야기를 들은 친구가 자기도 쓰고 싶다고 얘기했다.
보안 문제와 데이터 베이스 사용량 때문에 고민했는데
한 명 정도는 괜찮을 것 같아서 흔쾌히 수락했다.
친구에게만 배포 후, 필요한 기능을 추가해나가는 과정이 재밌을 것 같았다.
따라서, 친구와 나를 구분해줄 로그인 페이지를 먼저 만들기로 했다.
[오늘의 학습 키워드]
#오버라이딩 #이분 탐색 #동적 계획법 #로그인 페이지
[학습 내용 정리]
- 오버라이딩
https://devhippo.tistory.com/39
Java - 오버로딩, 오버라이딩
[ 오버로딩 overloading ]한 클래스 내에서 같은 이름의 메소드가 여러 개 정의될 때, 오버로딩 또는 메소드 중복이라고 한다.중복되는 메소드들은 매개변수의 개수 또는 타입이 달라야 한다.오버로
devhippo.tistory.com
- 이분 탐색
https://devhippo.tistory.com/35
이분탐색 (Binary Search)
[ 이분탐색 (Binary Search) ]정렬된 데이터에서 특정 값을 찾는 알고리즘이다.탐색 범위를 반씩 줄여나간다.O(log n) 대규모 데이터에 대해서 효율적이다.#include #include #include using namespace std;int main() {
devhippo.tistory.com
- 문제 풀이
https://devhippo.tistory.com/36
백준 2805번 - 이분 탐색 - 나무 자르기
https://www.acmicpc.net/problem/2805> 제한조건더보기시간제한 : 1초메모리 제한 : 256MB> 문제더보기상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허
devhippo.tistory.com
https://devhippo.tistory.com/37
백준 11053번 - 이분 탐색, 동적 계획법 - 가장 긴 증가하는 부분 수열
https://www.acmicpc.net/problem/11053> 제한조건더보기시간제한 : 1초메모리 제한 : 256MB> 문제더보기수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A
devhippo.tistory.com
- 프로젝트 2일차
로그인 페이지 제작을 시작했다.
어떻게 구성할지 감이 잘 잡히지 않다가 넷플릭스의 프로필 선택창을 모티브로 만들어야겠다고 생각했다.
일단 브라우저에 유저 정보를 저장하는 방법으로 구성을 완료한 후,
firebase 데이터 베이스에 연동되도록 변경할 계획이다.
< 해야할 것 >
- 콘텐츠를 모두 화면의 정중앙으로 모으기
- 프로필 구성 변경하기 (이미지는 네모, 글자는 네모 아래로)
- firebase 연동하기
- 프로필 클릭 후, 비밀번호를 올바르게 입력 시 페이지 변경
[학습하며 겪었던 문제점]
- 11053번 문제풀이
2805번 문제보다 11053번 문제풀이를 먼저 도전했다.
처음에는 단순하게 vector에 데이터를 정렬한 후, 중복을 제거하면 구하는 방법을 생각했다.
순열은 순서가 중요한데, 이 경우 순열의 순서가 보장되지 않기 때문에 부적합하다고 결론지었다.
또 다른 방법으로, 수열의 이전 위치의 최대값보다 큰 경우 길이 변수를 1 증가시키는 방법을 생각했다.
그러나 이 방법의 경우 처음 입력되는 값이 큰 경우, 가장 긴 수열을 구할 수가 없었다.
int n = 0;
scanf("%d", &n);
int a;
int beforeNum = 0;
int length = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &a);
if (beforeNum < a && beforeNum != a) {
beforeNum = a;
length++;
printf("%d\n", beforeNum);
}
}
결국 풀이 방법을 인터넷으로 찾아보니 이분 탐색을 활용해서 풀어야한다고 했다.
해당 문제 풀이를 잠시 뒤로 미뤄두고 이분 탐색을 먼저 공부한 후, 다시 문제를 푸니 훨씬 풀이가 쉬웠다.
동적 계획법을 어떤 문제에서 사용해야할지 판별하는 부분이 아직도 어렵게 느껴졌다.
동적 계획법 관련된 내용을 간단하게 정리해봤지만 부족한 부분이 많아서 앞으로 차근차근 업데이트할 계획이다.
[ 내일 학습 할 것 ]
1. Java 전공책 인터페이스 내용 복습하기
2. 이분 탐색 한 문제 복습하기, 분할 정복 문제 풀어보기
3. 프로필 선택창 개발 이어하기
'TIL' 카테고리의 다른 글
[사전캠프 15일차] _ 배열과 리스트 / 가계부 프로젝트 4일차 (0) | 2025.02.06 |
---|---|
[사전캠프 14일차] _ 인터페이스 / 가계부 프로젝트 3일차 (0) | 2025.02.05 |
[사전캠프 12일차] _ Java 상속 / 재귀 문제 / 가계부 프로젝트 1일차 (0) | 2025.02.03 |
[사전캠프 11일차] _ Java 예외처리 (0) | 2025.01.31 |
[사전캠프 10일차] _ DFS와 BFS 문제풀이 (0) | 2025.01.24 |