2024/11 14

[프로그래머스] 크레인 인형뽑기 게임 - JAVA 풀이

크레인 인형뽑기 게임문제 설명게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다."죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다.  게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다.(위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 ..

알고리즘 2024.11.07

MongoDB 복합 인덱스 최적화 - ESR 룰

몽고DB 조회 속도 개선을 위해 인덱스를 하나둘 걸어 보게 되고그게 적절한 수준을 넘어서 조잡해지면서 되려 복잡도만 올라가고 효용은 떨어지는 경험을 하게된다몽고DB 아틀라스에서 자체적으로 인덱스 조합을 추천해주기도 하지만 이 또한 만능은 아니다. 자주 변경되는 요구사항에 대응하며 최적화를 진행해야하는데..몽고DB에서 권장하는건 ESR룰이다 E : equlityS : sortR : range 이 순서로 인덱스를 건다는 의미인데정확히 일치하는 필드로 조회,동등성 검증 후 정렬,정렬된 데이터들의 범위를 제한해 성능을 개선한다는 것이다. 조회할 데이터의 동등 조건으로 쿼리 대상을 줄인 뒤에 정렬을 배치하면논블로킹으로 정렬이 가능하다. 몽고DB는 범위 필터 결과에 인덱스 정렬을 수행할 수가 없기 때문에 정렬 이..

데이터베이스 2024.11.06

[프로그래머스] 당구 연습 - JAVA 풀이

당구 연습문제 설명프로그래머스의 마스코트인 머쓱이는 최근 취미로 당구를 치기 시작했습니다.머쓱이는 손 대신 날개를 사용해야 해서 당구를 잘 못 칩니다. 하지만 끈기가 강한 머쓱이는 열심히 노력해서 당구를 잘 치려고 당구 학원에 다니고 있습니다.오늘도 당구 학원에 나온 머쓱이에게 당구 선생님이"원쿠션"(당구에서 공을 쳐서 벽에 맞히는 걸 쿠션이라고 부르고, 벽에 한 번 맞힌 후 공에 맞히면 원쿠션이라고 부릅니다) 연습을 하라면서 당구공의 위치가 담긴 리스트를 건네줬습니다. 리스트에는 머쓱이가 맞춰야 하는 공들의 위치가 담겨있습니다. 머쓱이는 리스트에 담긴 각 위치에 순서대로 공을 놓아가며 "원쿠션" 연습을 하면 됩니다. 이때, 머쓱이는 항상 같은 위치에 공을 놓고 쳐서 리스트에 담긴 위치에 놓인 공을 맞춥..

알고리즘 2024.11.05

[BOJ-1015] 수열 정렬 - JAVA 풀이

수열 정렬문제P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다.수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다.배열 A가 주어졌을 때, 수열 P를 적용한 결과가 비내림차순이 되는 수열을 찾는 프로그램을 작성하시오.비내림차순이란, 각각의 원소가 바로 앞에 있는 원소보다 크거나 같을 경우를 말한다.만약 그러한 수열이 여러개라면 사전순으로 앞서는 것을 출력한다.입력첫째 줄에 배열 A의 크기 N이 주어진다. 둘째 줄에는 배열 A의 원소가 0번부터 차례대로 주어진다. N은 50보다 작거나 같은 자연수이고, 배열의 원소는 1,000보다 작거나 같은 자연수이다.출력첫째 줄에 비내림차순으..

알고리즘 2024.11.03