이번 포스팅에서는 게시글 기능을 구현 할 것이다. 게시글 삭제 기능은 먼저 삭제하고 싶은 게시글이 로그인한 사용자가 작성한 게시글인지 본인 확인이 필요하다. 본인 확인이 되면 삭제 버튼을 누름으로써 delete로직이 실행된다. 다른 포스팅에서는 HTML폼이 있었지만 삭제에서는 버튼을 누르면 delete로직이 있는 url로 바로 매핑을 해놨기 때문에 HTML코드는 게시글 상세보기 포스팅을 참고하면 될 것 같다 1. postController.java 현재 로그인 한 사용자와 게시글의 작성자가 다를 때는 게시글 삭제 버튼을 누르면 해당 게시글의 작성자가 아닙니다 라며 알람을 띄우게 된다. 사용자와 작성자가 같으면 삭제 로직을 실행 후 게시글을 삭제했다고 알람을 띄운다. @PostMapping("/delete..
분류 전체보기
https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 1. Logic - check배열을 만들어서 리턴된 수는 생성자가 있는 숫자이기 때문에 체크를 해서 check배열이 true인 숫자들만 출력해주면 된다. 2. Code #include using namespace std; bool check[10001]; int cur(int num) { int sum = num; while(num != 0) { ..
이번 포스팅에서는 게시판에 올린 글을 수정 기능을 구현 할 것이다. 글 수정 기능은 먼저 수정하고 싶은 게시글이 로그인한 사용자가 작성한 게시글인지 본인 확인이 필요하다. 내부단에서 게시글 작성자인지 확인 후 작성자이면 수정을 아니면 에러메세지를 출력할 수 있도록 만들것이다. 1. postupdate.html 글 작성 폼이랑 동일하게 구성했다. 버튼의 하이퍼 링크정도 변경해줬다. 게시글 수정 제목 내용 수정 취소 2. postController.java 현재 로그인 한 사용자와 게시글의 작성자가 다를 때는 게시글을 수정하려면 이전에 썼던 제목과 본문을 불러와야 하기 때문에 해당 게시글의 boardId를 사용해서 게시글의 정보를 불러와 model 객체로 폼에 보내준다. @GetMapping("/update..
https://www.acmicpc.net/problem/17484 17484번: 진우의 달 여행 (Small) 첫줄에 지구와 달 사이 공간을 나타내는 행렬의 크기를 나타내는 N, M (2≤ N, M ≤ 6)이 주어진다. 다음 N줄 동안 각 행렬의 원소 값이 주어진다. 각 행렬의 원소값은 100 이하의 자연수이다. www.acmicpc.net 1. Logic 브루트 포스로 풀 수 있지만 각 칸에서의 최솟값은 변하지 않기 때문에 그 값을 저장해 놓고 DP로 풀이할 수 있다. 2. Code #include using namespace std; int n, m; int space[10][10]; int dp[10][10][4]; //0:왼 1:dir 2:오 int solve(int y, int x, int p..
https://www.acmicpc.net/problem/1939 1939번: 중량제한 첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 www.acmicpc.net 1. Logic 다리가 버틸 수 있는 무게가 10억까지이기 때문에 택배의 무게를 이분탐색으로 찾아준다. 이분탐색의 Check함수는 택배의 무게인 mid보다 각 경로가 버틸 수 있는 무게가 크거나 같을 때만 통과시켜 입력받은 출발지에서 시작하여 도착지에 도달할 수 있으면 택배의 무게를 늘리고 도착하지 못하면 택배의 무게를 줄이면서 적절한 택..
https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 1. Logic 자기 자신을 포함할 수는 없기 때문에 start와 end가 자신의 인덱스일때는 각각 ++, --를 해주고 투포인터로 탐색해주면 된다. 2. Code #include using namespace std; long long n; vector input; long long ans = 0; void solve(long long i) { long long start = 0; long long end = n-1; whi..
이번에는 작성한 작성한 게시글의 상세보기 페이지를 만들어 볼것이다. /freeboard에서 게시글 목록이 나오면 그 중 하나의 제목을 클릭하면 /freeboard/detail/{boardId}로 이동하고 그 글의 제목, 내용, 작성자 작성일 등 여러가지 상세 정보를 readonly로 보여주려고 한다. 1. freeboard.html freeboard.html을 다시 한번 보는 이유는 상세보기를 누를 때 해당 게시글의 boardId가 필요하기 때문이다. 게시글의 목록에서 제목에 하이퍼링크로 /freeboard/detail/{boardId}를 보낸다. URL에 boardId를 보내서 boardId로 해당 글에 대한 정보를 찾을 수 있도록 했다. 2. PostController.java @PathVariabl..
이번에는 작성한 게시글을 작성하는 페이지를 만들어 볼것이다. /posting으로 접속하게 되면 로그인한 사용자에 한해서 글을 작성할 수 있도록 글 작성 폼을 로드한다. 1. freeboard.html /freeboard/posting URL로 POST방식으로 제목, 내용을 postDTO에 담아 보내주고 이전 포스팅에서 말했듯이 작성시간과 수정시간은 자동으로 Auditing을 통해 들어간다! 게시글 등록 제목 내용 작성 취소 2. PostController.java 만약 아무거도 안쓰고 눌렀을 때를 대비하여 Validated를 활용하여 title이나 content에 값이 없을 때에는 예외를 발생시켜 글 작성이 안되도록 했다. 그리고 현재 로그인 한 아이디, 즉 로그인한 userId에 데이터베이스 연관관계를..
이번에는 작성한 게시글의 전체 목록을 출력하는 페이지를 만들어 볼것이다. /freeboard로 접속하게 되면 게시판 페이지에 모든 사용자들이 작성한 글을 출력하려고 한다. 1. freeboard.html 헤더부분은 이전 포스팅과 같이 네비바를 붙혀줬다. 게시판 기본 페이지에 사용자들이 작성한 글을 출력하고싶기 때문에 타임리프의 each를 사용해서 다음에 볼 controller에서 list라는 model객체로 보낸 Post객체 즉 게시글에 대한 정보가 담긴 Post객체를 list라는 변수로 모든 글 목록을 출력해줬다. 단 작성일은 Datetime 타입으로 DB에 들어가 있기 때문에 이쁜 모양으로 출력해주기 위해 포맷팅해줬다! 자유게시판 글 작성 글번호 작성자 제목 작성일 2. Post.java & Base..
https://www.acmicpc.net/problem/17503 17503번: 맥주 축제 첫 번째 줄에 축제가 열리는 기간 N (1 ≤ N ≤ 200,000) 과, 채워야 하는 선호도의 합 M (1 ≤ M 도수기준 오름차순 정렬 2. 선호도를 sum에다 누적해주고 우선순위 큐에 도수가 낮은거부터 순서대로 선호도에 -를 붙혀서 오름차순으로 정렬해준다. 3. 우선순위 큐pq의 사이즈 pq.size()값이 n이랑 같아지면 sum이 m 이상인지 확인 후 이상이면 현재 beer의 도수를 출력한다. 이유는 beer 벡터를 알콜 도수가 높은 순서대로 알콜도수 기준 오름차순 정리를 했기 때문에 지금 조건의 알콜 도수가 최소 도수이다. 4. 만약 3번에서 안걸러지고 우선순위 큐의 갯수가 n을 넘었다면 pq.top()..