728x90
반응형

전체 글 42

[백준 2309/ JAVA] 일곱난쟁이

https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 간단한(?) 브루트포스 문제이다. 난 먼저 모든 난쟁이의 키를 합친 후 100을 뺀 값을 구했다. 그 후 두 난쟁이의 키의 합이 100에서 전체 키를 뺀 값과 같은 경우를 구했다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public cl..

코테/JAVA 2024.01.15

[백준 17837 / JAVA ] 새로운 게임 2

https://www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net 여러 경우의 수를 확인하고 이를 구현하는 문제이다. 말을 올려놓고 다시 내리고 하는 과정이 링크드리스트와 느낌이 비슷해 금방 할 줄 알았지만 생각보다 어려웠다.. 내가 오래걸린 큰 이유는 2가지 였다. 1. 파란색이나 체스판을 벗어나는 경우 반대로 이동한 후 끝이 아니라 이동한 위치의 색에 따라 또 다르게 체스말을 바꿔야 한다. (빨간색인 경우 뒤집어줘야 한다) 이걸 놓치고 이동만 해줘 꽤 고..

코테/JAVA 2023.08.23

[백준 14501 / JAVA] 퇴사

https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 처음에 문제를 읽었을 때 DP만 잘 사용하면 바로 풀 수 있을것 같아 시도해 봤지만 실패.. 결국 DP와 브루트포스를 함께 이용했다. 간단히 첫 상담 날부터 시작해 해당 날의 상담을 하는 경우와 안하는 경우를 나누어 재귀 호출했다. public static void BP(int total, int index) { if (total > result) result = total; if (index >= N) return; if (index + T[index] - 1 < N) //해당 날짜 상담 하는 경우 BP(total + P[index..

코테/JAVA 2023.08.17

[Spring/MySQL] sql_mode=only_full_group_by 오류 해결

스프링과 MySQL을 연동해 사용하다가 sql_mode=only_full_group_by 오류가 발생했다.. ERROR 27180 --- [ scheduling-1] o.h.engine.jdbc.spi.SqlExceptionHelper : Expression #11 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'd.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by ERROR 27180 --- [ scheduling-1] o.s.s.s.TaskUt..

개발 일기 2023.08.09

[백준 23288/JAVA] 주사위 굴리기2

https://www.acmicpc.net/problem/23288 23288번: 주사위 굴리기 2 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 가장 왼 www.acmicpc.net 문제를 보자마자 BFS를 이용하는 문제라는 느낌이 왔다. 문제에 나와있는 주사위의 이동 과정은 순서대로 구현하고 점수를 구하는 부분에서 BFS를 사용했다. 처음에는 주사위의 아랫면을 저장하는 변수를 설정하고 현재 주사위의 아랫면과 방향에 따라 주사위의 아랫면을 바꾸는 함수를 만들어 다음 아랫면을 반환하도록 했다. 하지만 이 방식대로 하니 문제가 있었다. 특정 숫자의 동서남북이 주..

코테/JAVA 2023.08.03

[ALGOSPOT - SUSHI/JAVA] 회전초밥

https://algospot.com/judge/problem/read/SUSHI algospot.com :: SUSHI 회전초밥 문제 정보 문제 문제 풀이 내기에서 모인 벌금이 많이 쌓여서 알고스팟 운영진들은 회식을 하러 회전초밥집에 갔습니다. 회전초밥집에 들어선 운영진들은 초밥은 먹지 않고 전략 회의 algospot.com DP와 관련된 문제를 푼지 꽤 오래되어 어렵게 푼 문제이다. 처음에는 운영진의 예산만큼 배열을 만들어 DP로 풀려했지만 예산의 한도가 2,147,483,647인 것을 보고 DP가 아닌지 의심했다. 그러다 초밥의 가격이 항상 100의 배수인 것을 확인했다. 즉 초밥의 가격과 운영진의 예산을 100을 나눠버리면 된다는 뜻이다. 처음에는 Pair를 이용해 초밥의 가격과 선호도를 받고 이..

코테/JAVA 2023.07.31

[Spring] JUnit5에서 예외테스트 하기

스프링 공부를 하던 중 예외테스트를 하는 법을 보았다. 하지만 직접 코드를 처보니 expected 자체가 존재하지 않았다. 알고 보니 아래 방식은 JUnit5에서 예외를 테스트 하는 법이다. @Test(expected = IllegalStateException.class) public void ExceptionTest() throws Exception { //code fail("IllegalStateException 예외 발생해야 한다"); } 위 메소드에서 IllegalStateException이 발생한다고 예측한다는 뜻이다. 만약 발생하지 않는다면 fail안에 있는 메시지가 출력된다. 그럼 JUnit5에서는 어떻게 할까? @Test public void ExceptionTest() throws Exc..

[Spring] ShedLock을 통해 서버간 스케줄 중복 수행 방지

꽤 스케일이 큰 프로젝트를 하다보면 서버를 여러개 열게 된다. 알림을 보내거나 이메일을 보내는 작업 등과 같이 여러개의 서버를 통해 같은 이벤트를 수행하려다 이를 중복 수행하게 되는 경우가 있다. 이런 경우를 방지하기 위해 스프링에서는 @SchedulerLock 어노테이션을 지원해준다. https://github.com/lukas-krecan/ShedLock GitHub - lukas-krecan/ShedLock: Distributed lock for your scheduled tasks Distributed lock for your scheduled tasks. Contribute to lukas-krecan/ShedLock development by creating an account on GitHu..

[Spring] @Scheduled 이용해 특정 시간마다 함수 호출하기

@Scheduled 란? Spring에서는 @Scheduled 어노테이션을 이용해 특정 시각에 혹은 일정 시간 간격마다 함수를 호출할 수 있다. 사용법 @EnableScheduling @SpringBootApplication public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } } 먼저 @EnableScheduling 어노테이션을 Application 클래스에 추가한다. @Service public class TestService { //매일 아침 8시 실행 @Scheduled(cron = "0 0 8 * * *") public voi..

[백준 20055 / JAVA] 컨베이어 벨트 위의 로봇

https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 단순 구현 문제이다. public static void Rotate() { up--; if (up < 0) up = 2 * N - 1; down--; if (down < 0) down = 2 * N - 1; if (isRobot[down] == true) { robot.remove(0); isRobot[down] = false; } moveRobot(); } 1번 설명처럼 컨..

코테/JAVA 2023.07.24
728x90
반응형