본문 바로가기

java

(62)
[구현] - 성격 유형 검사하기 구현(Implementation) 유형의 알고리즘 문제는 주어진 조건을 그대로 구현하고 해결하는 것을 주 목적으로 하는 문제 유형입니다. 구현 문제는 대체로 문제에서 요구하는 규칙이나 절차를 코드로 정확하게 작성해야 하는데, 알고리즘 자체보다는 세부적인 절차를 얼마나 꼼꼼하게 처리하느냐가 핵심입니다.  코딩테스트에 자주 출현되는 `구현`유형은 제 블로그에 잘 정리되어 있고, 간단한 예제들이 있습니다. 알고리즘 코딩테스트 문제유형 [구현] [구현] - 둘만의 암호구현(Implementation) 유형의 알고리즘 문제는 주어진 조건을 그대로 구현하고 해결하는 것을 주 목적으로 하는 문제 유형입니다. 구현 문제는 대체로 문제에서 요구하는 규칙이나 절차를 코드로 정wanglan.tistory.com 사실 이번에..
[스택] - 햄버거 만들기 스택(Stack)은 알고리즘에서 자주 사용되는 자료구조로, 후입선출(LIFO: Last In, First Out) 원칙을 따릅니다. 스택을 사용하는 문제 유형은 일반적으로 데이터를 순서대로 처리하거나, 특정 조건에 맞춰 데이터를 뒤로 보내거나 제거해야 할 때 등장합니다.스택의 주요 동작:push: 데이터를 스택의 맨 위에 추가하는 연산입니다.pop: 스택의 맨 위에 있는 데이터를 제거하는 연산입니다.peek (or top): 스택의 맨 위에 있는 데이터를 제거하지 않고 확인하는 연산입니다.isEmpty: 스택이 비어있는지 확인하는 연산입니다. 스택의 동작 예시스택에 데이터가 차곡차곡 쌓이면서 나중에 들어간 것이 먼저 나오는 구조입니다.스택에 1, 2, 3을 차례대로 push하면, 스택의 상태는 [1, 2..
[탐욕 알고리즘] - 문자열 나누기 `탐욕 알고리즘(Greedy Algorithm)`은 현재 순간에서 최선의 선택을 반복적으로 수행하여 최종 해답을 구하는 방식의 알고리즘입니다. 즉, 각 단계에서 가장 좋은 선택을 함으로써 전체 문제의 최적해를 구하려고 합니다.탐욕 알고리즘의 특징은 문제를 해결할 때 각 단계에서 지역적으로 최선의 선택을 하면, 그것이 전역적으로도 최선의 해답(최적해)을 보장하는 경우에 사용된다는 점입니다.1. 탐욕 알고리즘의 동작 원리탐욕 알고리즘은 다음과 같은 방식으로 작동합니다:현재 상황에서 가장 좋은 선택을 함: 각 단계에서 가능한 선택 중 가장 최선의 선택을 고릅니다.문제의 나머지를 같은 방식으로 해결: 선택을 하고 나면, 나머지 부분에서도 동일한 방식으로 문제를 해결합니다.종료 조건: 더 이상 선택할 것이 없을 ..
[프로그래머스] 26회차 - 체육복 체육복문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution ..
[프로그래머스] 25회차 - 숫자 짝꿍 숫자 짝꿍문제 설명 두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다. 예를 들어, X = 3403이고 Y = 13203이라면, X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 3, 0, 3으로 만들 수 있는 가장 큰 정수인 330입니다. 다른 예시로 X = 5525이고 Y = 1255이면 X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 2, 5, 5로 만들 수 있는 가장 큰 정수인 552입니다(X에는 5가 3개, Y..
Spring - REST API 와 RESTful API(Application Programming Interface)API 는 프로그램이나 애플리케이션 간에 서로 소통할 수 있도록 해주는 방법입니다. 두 프로그램이 서로 정보를 주고받기 위한 규칙이나 약속이라고 생각하면 됩니다.예를 들어, 스마트폰의 날씨 앱을 사용할 때, 그 앱이 날씨 데이터를 서버에서 가져오는 과정이 API를 통해 이루어집니다. 날씨 앱은 API 를 통해 서버에 "현재 날씨는?" 이라고 요청하고, 서버는 그에 대한 응답으로 날씨 정보를 돌려줍니다.REST(Representational State Transfer)REST 는 웹 기반의 API 설계를 위한 아키텍쳐 스타일입니다. REST 는 HTTP 프로토콜을 사용해서 웹 상에서 리소스(데이터)를 정의하고 조작하는 방법을 규정합니다. ..
[개인과제] 일정 관리 앱 Develop - 댓글 관리 및 트러블 슈팅 과제의 필수기능 중에 하나인 댓글관리 기능이 있습니다. 기존에 회원과 할일 두 관계만 연결되어 있던 프로젝트에서 댓글 기능 하나가 늘어나면서 복잡도가 훨씬 증가하게 됩니다. 댓글은 일정이 반드시 있어야 작성이 될 수 있고, 하나의 일정은 여러 댓글을 가질 수 있게 됩니다.또한, 댓글은 회원으로부터 작성되어야 하고, 회원은 댓글을  쓰지 않거나, 하나만 쓰거나, 여러개를 쓸 수도 있습니다. 이런 조건들을 생각하면서 ERD 테이블을 그려보면 아래 사진과 같습니다. 이런 관계를 토대로 댓글관리 CRUD를 구현하고, 그러던 중 발생했던 문제들을 해결해 나간 과정을 작성해보도록 하겠습니다.1. 댓글관리 기능 구현댓글은 생성, 불러오기, 수정, 삭제 기능을 순서대로 구현하였습니다. 댓글 CRUD를 구현하기 전에, ..
[개인과제] 일정 관리 앱 Develop - 개발 과정 및 트러블 슈팅 이번 과제는, Spring 입문 주차에 만들었던 일정관리 앱을 업그레이드 하는 것입니다. 입문 단계에서 JDBC 템플릿을 사용하여 개발했던 앱을 JPA를 사용하는 것으로 변경하고, JWT 와 연관관계에 대한 내용을 추가하는 것을 목표로 합니다. 지금부터 앱을 Develop 해나간 과정과 그 중에 발생했던 문제들을 리뷰해보도록 하겠습니다.1. JPA 설정JDBC 는 더 이상 사용하지 않기 때문에, build.gradle 에 spring-boot-starter-data-jpa 를 추가하여 의존성을 수정했습니다. 그리고 Entity 부분에 @Entity 어노테이션을 선언하여 데이터베이스의 테이블과 매핑되는 Entity 를 지정해줬습니다. 이때 Entity Todo 클래스는@NoArgsConstructor(ac..