카테고리 102

[백준 1644 java 자바]소수의 연속합 - 투포인터(부분합 효율성)

[Gold III] 소수의 연속합 - 1644 문제 링크 성능 요약 메모리: 22888 KB, 시간: 1988 ms 분류 수학(math), 정수론(number_theory), 소수 판정(primality_test), 에라토스테네스의 체(sieve), 두 포인터(two_pointer) 문제 설명 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 가지) 하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기..

[백준 1806 java 자바]부분합- 투포인터(부분합 효율성)

[Gold IV] 부분합 - 1806 문제 링크 성능 요약 메모리: 25712 KB, 시간: 308 ms 분류 누적 합(prefix_sum), 두 포인터(two_pointer) 문제 설명 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. 출력 첫째 줄에 구하고자 하는 최소의 길이를 출력한다. 만일 그러한 합을 만드는 것이 불가능하다면 0을 출력하면..

[백준 2048 java 자바]2048 - DFS,구현

[Gold II] 2048 (Easy) - 12100 문제 링크 성능 요약 메모리: 20500 KB, 시간: 188 ms 분류 백트래킹(backtracking), 브루트포스 알고리즘(bruteforcing), 구현(implementation), 시뮬레이션(simulation) 문제 설명 2048 게임은 4×4 크기의 보드에서 혼자 즐기는 재미있는 게임이다. 이 링크를 누르면 게임을 해볼 수 있다. 이 게임에서 한 번의 이동은 보드 위에 있는 전체 블록을 상하좌우 네 방향 중 하나로 이동시키는 것이다. 이때, 같은 값을 갖는 두 블록이 충돌하면 두 블록은 하나로 합쳐지게 된다. 한 번의 이동에서 이미 합쳐진 블록은 또 다른 블록과 다시 합쳐질 수 없다. (실제 게임에서는 이동을 한 번 할 때마다 블록이 추..

[백준 1062 java 자바]가르침 - 백트래킹,DFS

[Gold IV] 가르침 - 1062 문제 링크 성능 요약 메모리: 15372 KB, 시간: 320 ms 분류 백트래킹(backtracking), 비트마스킹(bitmask), 브루트포스 알고리즘(bruteforcing) 문제 설명 남극에 사는 김지민 선생님은 학생들이 되도록이면 많은 단어를 읽을 수 있도록 하려고 한다. 그러나 지구온난화로 인해 얼음이 녹아서 곧 학교가 무너지기 때문에, 김지민은 K개의 글자를 가르칠 시간 밖에 없다. 김지민이 가르치고 난 후에는, 학생들은 그 K개의 글자로만 이루어진 단어만을 읽을 수 있다. 김지민은 어떤 K개의 글자를 가르쳐야 학생들이 읽을 수 있는 단어의 개수가 최대가 되는지 고민에 빠졌다. 남극언어의 모든 단어는 "anta"로 시작되고, "tica"로 끝난다. 남극..

[백준 2580 java 자바]스도쿠- 백트래킹,DFS

[Gold IV] 스도쿠 - 2580 문제 링크 성능 요약 메모리: 22056 KB, 시간: 424 ms 분류 백트래킹(backtracking) 문제 설명 스도쿠는 18세기 스위스 수학자가 만든 &#39;라틴 사각형&#39;이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루어진 정사각형 판 위에서 이뤄지는데, 게임 시작 전 일부 칸에는 1부터 9까지의 숫자 중 하나가 쓰여 있다. 나머지 빈 칸을 채우는 방식은 다음과 같다. 각각의 가로줄과 세로줄에는 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 굵은 선으로 구분되어 있는 3x3 정사각형 안에도 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 위의 예의 경우..

[오류] Filename too long in Git for Windows

개요 인텔리제이를 통해 GitHub를 올리는데, Commit이 안되는 상황이 발생했다. (git index도 먹혀지지 않았다.) 오류 메세지 & 분석 Filename too long이란 오류인데, 검색해보니 흔하게 발생하는 경우인 것 같았다. Window API에서 허용하는 글자 수가 있는데, 그 제한을 넘겨서 그렇다고 한다. 해결 git config --system core.longpaths true 를 실행시키면 된다. 나같은 경우, 그냥 Git Bash를 켜서 치면 [Git] 에러:could not lock config file...:permission denied 이런 Permission 오류가 났기 때문에, Git Bash를 관리자 모드로 켜서 실행시켰다. 결론 Notion으로 HTML 파일을 ..

오류 2022.09.15

[백준 9663 java 자바]N-Queen - 백트래킹

[Gold IV] N-Queen - 9663 문제 링크 성능 요약 메모리: 14468 KB, 시간: 5260 ms 분류 백트래킹(backtracking), 브루트포스 알고리즘(bruteforcing) 문제 설명 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (1 ≤ N < 15) 출력 첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 풀이 참고 https://velog.io/@ilil1/%EB%B0%B1%EC%A4%80-9663%EB%B2%88-java 너무 정리를 잘해둔 벨로그가 있어서 참고하였다. 4X4 기준 arr[0]..

카테고리 없음 2022.09.15

[오류] Vertica + SpringBoot 연동 오류 (HikariDataSource eror)

개요 Vertica DB로 새롭게 서버를 구축하던 도중, 서버가 기동이 안되길래 오류를 확인해봤더니 HikariDataSource를 못만들고 있었다. 확인해보니 properties를 바인딩하지 못하는 모양. 결론적으로 Driver 버전을 맞춰야 하는 일이었다. 까다로운 Vertica와 SpringBoot를 쓰시는 분들이 나와 같은 문제를 겪지 말라고 남기는 기록. 오류 메세지 & 분석 Description: Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource: Property: driverclassname Value: oracle.jdbc.OracleDriver Origin: "driverClassName" from prope..

오류 2022.09.02

동시성 문제 해결(ThreadLocal)

동시성 문제 발생 예시 주로 싱글톤에서 static Field / 인스턴스 Field 등 작업단위에서 공용으로 변수를 접근하여 수정할 경우 동시성 문제가 발생한다. private int id;//인스턴스 변수 public int logic(int uniqueId) { log.info("저장 id={} -> uniqueId={}", id,uniqueId); id = uniqueId; sleep(1000); log.info("조회 uniqueId={}", id); return id; } 이 logic 이란 메서드를 동시에 Thread가 접근하여 실행하면,(여러 사용자가 동시에 사용) 정상 동작 ThreadA -> id 3으로 저장 ThreadA -> id = 3 출력 ThreadB -> id 4로 저장 Th..

개발언어/JAVA 2022.08.31

[백준 11053 java 자바]가장 긴 증가하는 부분 수열 (DP)

[Silver II] 가장 긴 증가하는 부분 수열 - 11053 문제 링크 성능 요약 메모리: 11944 KB, 시간: 100 ms 분류 다이나믹 프로그래밍(dp) 문제 설명 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 풀이 dp문제는 항상 그렇듯,..