Light Blue Pointer
본문 바로가기

분류 전체보기298

[백준] 구간 합 구하기 5 문제 주소https://www.acmicpc.net/problem/11660문제 설명N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다.예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자.1 2 3 4234534564567여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다.표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오.입력첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000).. 2024. 6. 23.
[백준] 구간 합 구하기 4 문제 주소https://www.acmicpc.net/problem/11659문제 설명수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다.출력총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.제한1 ≤ N ≤ 100,0001 ≤ M ≤ 100,0001 ≤ i ≤ j ≤ N예제 입력 15 35 4 3 2 11 32 45 5예제 출력 11291일단 단순하게 짜봤는데 지금 상태에서는 누적합이라는 알고리즘이 왜 따로 분리되었는지 이해가 .. 2024. 6. 23.
[백준] 이전 순열 문제 주소https://www.acmicpc.net/problem/10973문제 설명1부터 N까지의 수로 이루어진 순열이 있다. 이때, 사전순으로 바로 이전에 오는 순열을 구하는 프로그램을 작성하시오.사전 순으로 가장 앞서는 순열은 오름차순으로 이루어진 순열이고, 가장 마지막에 오는 순열은 내림차순으로 이루어진 순열이다.N = 3인 경우에 사전순으로 순열을 나열하면 다음과 같다.1, 2, 31, 3, 22, 1, 32, 3, 13, 1, 23, 2, 1입력첫째 줄에 N(1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄에 순열이 주어진다.출력첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다.예제 입력 141 2 3 4예제 출.. 2024. 6. 21.
[백준] 다음 순열 문제 주소https://www.acmicpc.net/problem/10972문제 설명1부터 N까지의 수로 이루어진 순열이 있다. 이때, 사전순으로 다음에 오는 순열을 구하는 프로그램을 작성하시오.사전 순으로 가장 앞서는 순열은 오름차순으로 이루어진 순열이고, 가장 마지막에 오는 순열은 내림차순으로 이루어진 순열이다.N = 3인 경우에 사전순으로 순열을 나열하면 다음과 같다.1, 2, 31, 3, 22, 1, 32, 3, 13, 1, 23, 2, 1입력첫째 줄에 N(1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄에 순열이 주어진다.출력첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다.예제 입력 141 2 3 4예제 출력 11 .. 2024. 6. 21.
한 시간 후 만료되는 초대 링크 개발기 : DB 구성에 대한 고민 디스코드 클론코딩 서비스를 개발하면서채팅방 입장 링크를 발급해준 후 한시간 후 만료시키고만료되지 않은 코드라면 참여가 가능하게 해야하는 기능을 개발해야했다 Key:Value 형태로 간단하게 저장할 수 있을 것 같고 만료되는 기능도 TTL로 하기 쉬운 Redis를 쓰기로 했는데, 코드 발급 시에는 채팅방id, userId -> 코드 이렇게 접근해야 했고코드로 참여 시에는 코드 -> 채팅방 id 이렇게 접근해야 했다 그러나 Redis는 Key로 Value를 찾는 것은 효율적인 반면, Value로 Key를 찾는 것은 효율적이지 않아서처음에는 채팅방id, userId -> 코드, 코드 -> 채팅방 id 이렇게 DB를 두개로 나눠서 저장했다  @Serviceclass ChatRoomService( private.. 2024. 6. 20.
✨Repository가 다르다고 Model도 다를 필요는 없다👍 ✨Repository를 나눠서 model도 나눴던 것 통합서버 채팅을 조회할 때는 채팅방 채팅을 조회할 필요가 없고채팅방 채팅을 조회할때는 서버 채팅을 조회할 필요가 없는데둘 다 ChatRepository에 저장하게 되면 조회 성능이 안 좋아질 것 같아서Repository를 RoomChatRepository , ServerChatRepository로 분리했었다@NoArg@Document(collection = "chats")class RoomChat( val userId: String, val roomId: String, val content: String,) : BaseTime() { @Id var id: String? = null fun isEdited(): Boolean { retu.. 2024. 6. 20.
Service에서 다른 Service 를 의존하게 하기 채팅방 기능을 개발할 때 ChatRoomService에서 좀 동떨어진 Invitation 관련 기능들을 많이 이용하게 되었는데그게 ChatRoomService에 있으면 좀 의미가 맞지 않는 것 같아서 모두 InvitationRepository로 분리해서 코드를 구축했다@Serviceclass ChatRoomService( private val chatRoomRepository: ChatRoomRepository, private val invitationRepository: InvitationRepository,) {fun getChatRoomInvitation( chatRoomId: String, userId: String, ): InvitationResponse { verifyCh.. 2024. 6. 20.
[프로그래머스] 가장 큰 정사각형 찾기 문제 주소 https://school.programmers.co.kr/learn/courses/30/lessons/12905 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명1와 0로 채워진 표(board)가 있습니다. 표 1칸은 1 x 1 의 정사각형으로 이루어져 있습니다. 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하는 solution 함수를 완성해 주세요. (단, 정사각형이란 축에 평행한 정사각형을 말합니다.)예를 들어1 2 3 40111111111110010가 있다면 가장 큰 정사각형은1 2 3 401111111111100.. 2024. 6. 19.
[백준] 크게 만들기 문제 주소https://www.acmicpc.net/problem/2812  문제 설명N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N과 K가 주어진다. (1 ≤ K 둘째 줄에 N자리 숫자가 주어진다. 이 수는 0으로 시작하지 않는다.출력입력으로 주어진 숫자에서 K개를 지웠을 때 얻을 수 있는 가장 큰 수를 출력한다.예제 입력 14 21924예제 출력 194예제 입력 27 31231234예제 출력 23234예제 입력 310 44177252841예제 출력 3775841  제출 코드 1import java.io.*;import java.util.*;public class Main { static char[] number; .. 2024. 6. 16.