본문 바로가기

전체 글

(224)
신고 기능 구현 1. 개요이번에는 신고 기능을 구현해보았다. 신고, 신고 내역 조회, 처리 기능을 각각 구현해 볼 것이다.우선 이 프로젝트에서는 게시글 역할을 하는 스토리가 있고, 그 스토리에는 댓글을 달 수 있다. 스토리와 댓글에 따라 신고 내역에 표시되어야 하는 정보가 다르고, 이를 감안하여 기능을 구현할 예정이다. 2. ERD신고 테이블이다. 신고 타입에 따라 따로 처리를 하게 될 것이다. 이에 따라 story, comment와 다대일 관계를 맺게 되었고, 신고 타입이 story(comment)일 경우 comment(story)에는 아무것도 저장하지 않게 될 것이다.이외 처리상태, 사유, 처리 시각을 저장하도록 하였다.@Entity@Getter@Builder@NoArgsConstructor(access = Acce..
Trouble Shooting: 배포 시 env 관리하기 1. 개요시작에 앞서 이 일은 대부분 본인의 실수로 일어난 일임을 먼저 고지한다. 이 글은 내가 겪은 문제의 원인과 해결과정을 작성한 글이다. 2. 문제 발생 Docker로 CI/CD를 진행하여 git action 스크립트도 다 적고 배포하던 중 에러가 발생했다.Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.jwt.secret' in value "${spring.jwt.secret}"2-1 해결 1: 환경변수 주입해당 프로젝트에서는 환경 변수를 주입하는 방식으로 민감 정보를 관리한다. 이에 따라 env 파일을 만들어 깃허브에 secrets로 등록하고 script: | ..
Docker CI/CD 진행하기 1. 개요지금까지 docker의 동작 방식을 이해하고 프로젝트를 띄워 보았다. 이제 이를 이용하여 자동화시켜보자.2. scriptsname: CICD Testrun-name: Runningon: push: branches: - masterjobs: build-with-gradle: runs-on: ubuntu-latest steps: - name: Checkout master branch uses: actions/checkout@v3 - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'co..
백준 22866 탑 보기 (Java) 1. 문제일직선으로 다양한 높이의 건물이 총 N개가 존재한다. 각 건물 옥상에서 양 옆에 존재하는 건물의 옆을 몇 개 볼 수 있는지 궁금해졌다. i번째 건물 기준으로 i−1, i−2, ..., 1번째 건물은 왼쪽에, i+1, i+2, ..., N번째 건물은 오른쪽에 있다. 각 건물 사이의 거리는 다 동일하다.현재 있는 건물의 높이가 L이라고 가정하면 높이가 L보다 큰 곳의 건물만 볼 수 있다.바라보는 방향으로 높이가 L인 건물 뒤에 높이가 L이하인 건물이 있다면 가려져서 보이지 않는다.번호12345678높이37163517보이는 건물 번호2x2, 4, 82, 82,4,6,82,4,82,4,6,8x각 건물에서 볼 수 있는 건물들이 어떤것이 있는지 구해보자.입력첫번째 줄에 건물의 개수 N이 주어진다.두번째 줄..
백준 14658 하늘에서 별똥별이 빗발친다 (Java) https://www.acmicpc.net/problem/146581. 문제“오빠! 나 얼마만큼 사랑해?”“널 위해서라면 저기 저 하늘의 별이라도 따다 줄 수 있어. 지금 따줄까?”“에이, 거짓말!”“정말이야. 한 번 봐봐!”욱제는 하늘을 발로 차버렸다. 그랬더니 정말 별이 떨어졌다. 그런데, 정말로 별이 지구로 떨어지기 시작했다. 욱제는 지구를 지키는 정의의 용사가 되기로 결심했다.“자기야, 나 세계를 지키고 올게. 꼭 돌아올 테니 조금만 기다려줘.”지구의 파괴를 막기 위해서는 지표면에 떨어지는 별똥별의 수를 최소화해야 한다. 욱제는 커다란 네모난 L*L 크기의 트램펄린을 준비했다. 별똥별이 어디로 떨어질지는 이미 알고 있기 때문에, 욱제는 이 트램펄린으로 최대한 많은 별똥별을 우주로 튕겨낼 계획이다...
백준 1238 파티 (Java) https://www.acmicpc.net/problem/12381. 문제N개의 숫자로 구분된 각각의 마을에 한 명의 학생이 살고 있다.어느 날 이 N명의 학생이 X (1 ≤ X ≤ N)번 마을에 모여서 파티를 벌이기로 했다. 이 마을 사이에는 총 M개의 단방향 도로들이 있고 i번째 길을 지나는데 Ti(1 ≤ Ti ≤ 100)의 시간을 소비한다.각각의 학생들은 파티에 참석하기 위해 걸어가서 다시 그들의 마을로 돌아와야 한다. 하지만 이 학생들은 워낙 게을러서 최단 시간에 오고 가기를 원한다.이 도로들은 단방향이기 때문에 아마 그들이 오고 가는 길이 다를지도 모른다. N명의 학생들 중 오고 가는데 가장 많은 시간을 소비하는 학생은 누구일지 구하여라.입력첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ ..
백준 4179 불! (Java) 1. 문제지훈이는 미로에서 일을 한다. 지훈이를 미로에서 탈출하도록 도와주자!미로에서의 지훈이의 위치와 불이 붙은 위치를 감안해서 지훈이가 불에 타기전에 탈출할 수 있는지의 여부, 그리고 얼마나 빨리 탈출할 수 있는지를 결정해야한다.지훈이와 불은 매 분마다 한칸씩 수평또는 수직으로(비스듬하게 이동하지 않는다) 이동한다.불은 각 지점에서 네 방향으로 확산된다.지훈이는 미로의 가장자리에 접한 공간에서 탈출할 수 있다.지훈이와 불은 벽이 있는 공간은 통과하지 못한다.입력입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다.다음 입력으로 R줄동안 각각의 미로 행이 주어진다.각각의 문자들은 다음을 뜻한다.#: 벽.: ..
백준 1987 알파벳 (Java) https://www.acmicpc.net/problem/19871. 문제세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다.말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다. 즉, 같은 알파벳이 적힌 칸을 두 번 지날 수 없다.좌측 상단에서 시작해서, 말이 최대한 몇 칸을 지날 수 있는지를 구하는 프로그램을 작성하시오. 말이 지나는 칸은 좌측 상단의 칸도 포함된다.입력첫째 줄에 R과 C가 빈칸을 사이에 두고 주어진다. (1≤R,C≤20) 둘째 줄부터 R개의 줄에 걸쳐서 보드에 적혀 있..