2024/06 32

[백준] 2477번 : 참외밭 - Java

문제https://www.acmicpc.net/problem/2477참외밭의 변 길이와 방향이 주어졌을 때, 참외밭의 면적을 구하고 참외의 개수를 출력하는 문제접근 방법주어진 참외밭의 변 길이와 방향을 통해 큰 사각형의 최대 너비와 높이를 구합니다.큰 사각형에서 제외할 작은 사각형의 너비와 높이를 구합니다.큰 사각형의 면적에서 작은 사각형의 면적을 빼서 참외밭의 실제 면적을 구합니다.이 면적에 참외의 개수 K를 곱하여 총 참외의 수를 도출합니다.구현입력받기: 참외의 개수 K와 참외밭의 변 길이와 방향을 입력받습니다.큰 사각형의 변 길이 구하기: 방향이 1 또는 2인 경우(동쪽, 서쪽) 가장 긴 변을 maxWidth로 설정하고, 방향이 3 또는 4인 경우(남쪽, 북쪽) 가장 긴 변을 maxHeight로 설..

[예약구매] 데이터베이스 선택 과정

데이터 베이스 선택은 프로젝트의 요구사항과 환경에 따라 달라질 수 있습니다. 배경예약 구매 프로젝트는 사용자가 특정 상품을 특정 시간에 예약하여 구매할 수 있도록 지원하는 시스템입니다. 이 시스템은 사용자 관리, 상품 관리, 주문 관리 등 여러 핵심 기능을 포함하며, 대규모 트래픽을 처리하고 데이터의 일관성 및 무결성을 유지하면서 높은 확장성과 성능을 제공해야 합니다. 데이터베이스(DB) 선택은 이러한 요구를 충족시키는 데 중요한 요소입니다. 데이터베이스 선택 고려사항데이터 무결성과 일관성: 데이터베이스는 정확한 데이터 무결성과 일관성을 보장해야 하며, 트랜잭션 롤백 및 복구 기능이 필요합니다.확장성과 성능: 대규모 데이터베이스와 복잡한 쿼리를 처리할 수 있는 확장성과 높은 성능이 요구됩니다.애플리케이션..

[예약구매] 자바 버전 선택

https://www.jetbrains.com/lp/devecosystem-2023/java/ 기준  표를 보면 8, 17, 11 버전 순으로 사용을 많이 하고 있고, 8과 17을 사용하는 점유율이 비슷하다. 자바 17 버전을 선택한 이유1. 장기 지원 (LTS) 버전의 안정성 자바 17은 Long-Term Support (LTS) 버전으로, Oracle 및 OpenJDK 커뮤니티에서 장기간의 지원과 보안 업데이트를 보장합니다. 자바 8과 11에 이어 LTS 버전으로서 안정성과 검증된 성능을 제공하며, 기업 환경에서의 신뢰성을 확보하는 데 유리합니다. JetBrains DevEcoSystem 2023의 자료에 따르면, 자바 17은 점진적으로 사용 빈도가 상승하고 있으며, 안정성과 성능 측면에서 높은 평가..

[항해99 취업 리부트 코스 학습일지] 4주차 알고리즘 학습 Day 6

(오늘은 강의 학습과 팀스터디는 진행하지 않았습니다.) 4주차 알고리즘 마지막 날로 코딩 테스트를 치렀는데, 4문제중 2문제를 풀었다. (난이도 실버1, 골드5) 난이도가 실버1이 제일 낮아서 시작하기에 앞서 어려울꺼라고 생각했는데 예상보다 수월하게 풀었던 문제였다. 3, 4번은 예외...그 동안 열심히 강의를 듣고 문제 푼 보람이 있었던 것 같다. 아직 멀었다고 생각 되지만, 작은 성취감이라도 느낄 수 있지 않았나 싶다. 내일부터는 프로젝트 주차가 시작된다. 오늘 프로젝트 주제를 선택했는데, 계속 고민하다가 처음 끌렸던 주제인 예약 구매를 선택했다. 고민 했던 이유는 난이도가 어려울 꺼 같아 제대로 구현을 못하고 끝나지 않을 까 하는 생각이 들었기 때문이다. 그래도 흥미가 있는 프로젝트 주제를 선택한 ..

[항해99 취업 리부트 코스 학습일지] 4주차 알고리즘 학습 Day 5

Q. 오늘 진행된 강의에서 학습한 내용은 무엇인가요?4주차까지 배웠던 알고리즘 자료구조, 이분탐색, DFS/BFS, 완전탐색 그리디 다익스트라, DP 등등 다양한 알고리즘을 학습하였다. 오늘은 배운 내용을 다시 정리하고 완전탐색, 그리디, DP, 이분탐색 등등 복습하며 문제를 풀었다.앞으로 문제 유형을 보지 않고 내가 추측해서 푸는 연습을 꾸준히 해야겠다. Q. 이번 주 진행된 팀 스터디에서 얻은 인사이트는 무엇인가요?앞으로의 준비 방향으로 모의고사처럼 유형을 모르는 상태에서 문제를 푸는 연습, 유형 숙달, 난이도 천천히 높이기그리고 추가로 공부해보면 좋은 주제로는 투포인터, Union Find 한번씩 보면 좋을 것 같다. - 알고리즘 1일 1문제씩 풀기- 모르겠는 알고리즘 유형은 반복해서 풀면 템플릿 ..

[백준] 9655번 : 돌 게임 - Java

문제https://www.acmicpc.net/problem/9655 두 명의 플레이어가 번갈아 가며 돌을 가져가는 게임입니다. 각 플레이어는 한 번에 1개 또는 3개의 돌을 가져갈 수 있습니다. 마지막 돌을 가져가는 사람이 승리하게 됩니다. 게임은 항상 상근이가 먼저 시작합니다. 주어진 돌의 개수 N이 입력으로 주어질 때, 상근이가 이기는지 창영이가 이기는지 출력하는 문제접근 방법DP 배열을 사용하여 각 돌의 개수에서 이길 수 있는지 여부를 저장합니다.상근이가 돌을 1개 또는 3개 가져갈 수 있기 때문에, 돌의 개수가 N-1 또는 N-3일 때 상대방이 지는 경우, 현재 돌의 개수 N에서는 상근이가 이기게 됩니다.돌의 개수가 1개 또는 3개일 때, 상근이가 이길 수 있습니다. (첫 번째로 가져가기 때문)..

[항해99 취업 리부트 코스 학습일지] 4주차 알고리즘 학습 Day 4

Q. 오늘 진행된 강의에서 학습한 내용은 무엇인가요?다이나믹 프로그래밍 (Dynamic Programming)동적 계획법이란?동적 계획법(dynamic programming, DP)은 복잡한 문제를 더 간단한 여러 하위 문제로 나누어 해결하는 알고리즘 기법입니다. DP는 특정 구조가 내부적으로 반복되는 문제에서, 일부 문제의 풀이 결과를 재활용(메모이제이션)함으로써 계산의 효율성을 크게 높입니다. 이 기법은 부분 문제 반복과 최적 부분 구조를 가지며, 일반적인 방법에 비해 시간 복잡도를 크게 줄일 수 있습니다.다이나믹 프로그래밍의 특징하위 문제의 재사용:문제를 더 작은 하위 문제로 나누고, 각 하위 문제의 답을 저장하여 동일한 하위 문제를 반복해서 계산하지 않습니다.메모이제이션(Memoization):계..

[항해99 취업 리부트 코스 학습일지] 4주차 알고리즘 학습 Day 3

Q. 오늘 진행된 강의에서 학습한 내용은 무엇인가요?그리디(Greedy) 알고리즘개요그리디 알고리즘은 탐욕 알고리즘이라고도 하며, 최적해를 구하는 데에 사용되는 근사적인 방법입니다. 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달합니다. 그리디 알고리즘은 그 순간마다 지역적으로 최적의 선택을 하지만, 이 선택이 항상 전역적으로 최적임을 보장하지는 않습니다.특징지역 최적성: 각 단계에서 지역적으로 최적의 선택을 합니다.전역 최적성 보장 X: 지역 최적성이 항상 전역 최적성을 보장하지 않습니다.단순성: 구현이 간단하고 이해하기 쉽습니다.적용 가능한 문제그리디 알고리즘은 다음과 같은 조건을 만족하는 문제에 효과적으로 적용할 수 ..

[항해99 취업 리부트 코스 학습일지] 4주차 알고리즘 학습 Day 2

Q. 오늘 진행된 강의에서 학습한 내용은 무엇인가요?백트래킹백트래킹이란 무엇인가요?백트래킹은 문제를 해결하기 위해 후보 해를 하나씩 만들어 나가다가, 해당 후보 해가 문제의 조건을 만족하지 않으면 즉시 포기하고 다음 후보 해를 시도하는 알고리즘입니다. 즉, 가능한 모든 해를 탐색하되 불필요한 탐색은 줄여서 효율적으로 문제를 해결하는 방법이에요.백트래킹의 특징재귀적 탐색: 백트래킹은 재귀적으로 모든 가능한 해를 탐색해요. 각 단계에서 후보 해를 확장하거나 포기하는 결정을 내려요.가지치기: 가능성이 없는 경로를 빨리 포기(가지치기)하여 탐색 공간을 줄입니다. 이를 통해 시간 복잡도를 줄이고 효율성을 높여요.상태 공간 트리: 해결 과정이 트리 형태로 표현되며, 트리의 각 노드는 해결의 각 단계를 나타냅니다. ..

[항해99 취업 리부트 코스 학습일지] 4주차 알고리즘 학습 Day 1

Q. 오늘 진행된 강의에서 학습한 내용은 무엇인가요?시뮬레이션 문제란?시뮬레이션 문제는 구현 문제의 한 유형으로, 특정 상황을 코드로 시뮬레이션하여 해결하는 문제입니다. 이러한 문제는 난이도가 높을 수 있지만, 복잡한 알고리즘보다 명확한 구현 능력이 요구되는 경우가 많습니다.왜 시뮬레이션 문제가 중요한가?코딩 테스트에서 빈번히 출제: 많은 기업의 코딩 테스트에서 자주 출제됩니다.구현 능력 평가: 단순한 알고리즘 능력보다는 문제를 이해하고 코드를 통해 정확하게 구현하는 능력을 평가하는 데 적합합니다.필요한 도구자료구조: 효율적인 문제 해결을 위한 기본적인 자료구조.시간복잡도 계산: 알고리즘의 효율성을 평가하고 시간복잡도를 계산하는 능력.그래프 기초: BFS, DFS와 같은 그래프 탐색 기법.브루트포스(완전..