분류 전체보기 344

(간략정리) 인텔리제이 플러그인을 만들어 보았다.

나도 개발하면서 느낀게, 하나의 메서드가 여러 곳에서 사용되면 이거를 고쳐도 잘 작동이 되는지...가 약간 애매했다.엄청 많은 곳에서 쓰고, 이거를 테스트한다면 그거를 하나하나 다 테스트하는건 힘들고, 그렇다고 안하면 무섭고... 그래서 플러그인을 하나 만들어봤다. https://github.com/RyooChan/All-Call-Method-Tester GitHub - RyooChan/All-Call-Method-Tester: 해당 메서드가 사용된 모든 Test code 를 한번에 돌릴 수 있게 하는해당 메서드가 사용된 모든 Test code 를 한번에 돌릴 수 있게 하는 플러그인. Contribute to RyooChan/All-Call-Method-Tester development by creati..

기타/일상 2024.11.09

[HackerRank] ctci-array-left-rotation java 풀이

문제 설명1. 배열의 요소들을 왼쪽으로 돌리는거다.2. 그리고 맨 뒤에 애는 오른쪽 끝으로 가는식  풀이 과정 1. 딱히 어려운 문제는 아니지만, 성능에 이슈가 있을 수 있다. 2. 간단하게 말하면 어디까지 가야할지를 확인하고 돌리면 된다. 3. 근데 그거를 매번 돌릴 필요 없고 얼마나 가면 되는지 알면 되는데, 어차피 배열 전체 크기는 정해져 있으니 갈 거리에서 배열크기 나머지를 구하면 이동한 변위가 된다.  public static List rotLeft(List a, int d) { int maxLength = a.size(); d %= maxLength; List ans = new ArrayList(Collections.nCopies(max..

알고리즘 공부 2024.11.08

AI기반 검색엔진 Perplexity pro 나쁘지 않다

요즘 참 AI기반한 뭔가가 많은데, 그 중에서도 일반적으로도 잘 활용될 수 있는 검색엔진 퍼플렉시티에 대해 간략히 알아본다. 사실 알아볼것도 없다. 그냥 검색엔진임.근데 이거 pro를 잠깐 찍먹해봤는데(회사분이 무료 이용 가능 꿀팁을 주셨다.) 활용법 자체가 너무 좋다.개발 시에도 활용할 수 있고 그냥 평소에 나같은 검색 못하는 녀석들한테는 진짜 장난아니게 좋은 느낌이다. 예를 들어 요즘 핫한 흑백요리사(사실 요즘은 전보다는 좀 덜 핫하다. warm 정도?) 레스토랑을 예약을 좀 잘 하고 싶으면 흑백요리사 레스토랑 예약 꿀팁 대충 이렇게 칠 것이다. 아마 나같은 검색 초보는 이럴거다.근데 그러면   대충 이런 식으로 나온다.무슨 정보를 찾아야할지 잘 모르겠다는 느낌이다.그리고 정작 블로그 들어가서 보면 ..

[백준 2225번] 합분해 - java

문제 설명1. 0부터 N까지의 정수 K 개를 더해서 합이 N이 되어야 한다.2. 즉 N번 계산해서 K가 나오도록 풀이 과정 1. 이거 DP이다. 2. DP는 일단 무식하게 풀면서 점화식을 찾아보는 것이 중요하다. 3. 그래서 풀어보면요런 식으로 나온다.한번 계산할 때에는 (0) | (1) | (2) | (3) | (4)두번 계산할 때에는 (00) | (10) (01) | (03) (12) (21) (30) | (04)(13)(22)(31)(40)이런 식으로 간다. 그래서 저거 잘 들여다 보면 점화식이 대충 보인다.val[i][j] = val[i-1][[j] + val[i][j-1]이런 식으로 그래서 일단 전체를 1로 초기화하고 더해가면 된다. 코드import java.util.*;public class ..

알고리즘 공부 2024.11.04

java Integer에서 == 비교를 한다면?

Java 에서 Integer 타입을 쓰는 경우가 은근 많다.사실 실제로 업무를 할 때에는 nullable 하지 않은 경우는 int를 사용하라고 하지만(Primitive type) 아마 null safe를 위해 이걸 쓰는 경우도 있을 것이다.근데 요거 == 비교를 하면 골때릴때가 있다.public class Main { public static void main(String[] args) { Integer a = 1; Integer b = 1; System.out.println("compare 1 : " + (a == b)); a = 127; b = 127; System.out.println("compare 127 : " + (a == b)); ..

이론 정리/java 2024.11.03

[백준 1043번] 거짓말 - java

문제 설명1. 사람 수, 파티의 수가 첫 줄에 주어지고2. 둘쨰 줄에는 이야기의 진실을 아는 사람의 수와 번호가 주어진다.3. 그 다음부터는 파티의 갯수만큼 사람들이랑 그 사람의 번호가 주어진다.4. 진실을 아는 사람이 속한 파티나, 그 사람이랑 같은 파티에 한번이라도 참가한 사람이 있거나, 같은 파티에 참석한 점이 있는 사람이 한명이라도 있는 파티에서는 거짓말을 못한다.5. 거짓말 할 수 있는 파티 수를 구하면 된다. 풀이 과정 1. 유니온 파운드 문제이다. 2. 모든 사람의 관계를 조사해서, 진실을 아는 사람이 같은 유니온에 들어가있는지 파악하면 된다. 3. 사실 그렇게 어려운 문제는 아니겠지만(아니겠지?) 유니온 파인드에 관한 지식은 가지고 있어야 풀 수 있다. 한번 브루트포스로 풀어보려 했더니 당..

알고리즘 공부 2024.10.20

[백준 3109번] 빵집 - java

문제 설명1. R*C 격자가 주어지고, '.'은 갈 수 있는 길 'X' 는 갈 수 없는길(건물) 이다.2. 왼쪽 끝에서부터 시작해서 오른쪽 끝으로 연결이 가능하면 파이프가 이어지는것.3. 하나의 시작점에서는 하나만 도달한다.4. 이미 연결되면 그 다음에는 연결되지 않는다.5. 그래서 도달한게 몇개인지 맞추면 된다. 풀이 과정 1. DFS, 그리디이다. 2. 백트래킹도 가능할 것 같기는 한데... 나는 DFS로 풀었고 그 이유는 3. 위에서부터 아래로 가면서, 그리고 위로 가면서 확인하면 결국 갈 수 있는 길 자체가 정해진다.(그리디의 일종?) 4. 즉, 위에서부터 확인하고 올라가기 - 직선 - 내려가기 할 때에 위에서 이미 갔으면 그거 자체가 하나의 루트가 된다. 즉 아래에서 이거때문에 못간다고 해도 달..

알고리즘 공부 2024.10.13

[백준 13422번] 도둑 - java

문제 설명1. 맨 윗줄은 테스트 케이스 갯수2. 2줄씩 받고 -> 처음은 [집갯수, 훔칠 집 수, 훔칠 금액 최대값+1] / 두번째는 [집들의 가진 돈] 이 주어진다.3. 도둑이 훔치려고 할 때에 인접한 집을 찾아가면서 훔치고 일정 금액 이상 훔치거나 일정 집 수 이상 훔치면 잡혀감4. 그 안에서 훔칠 경우의 수를 구하면 된다. 풀이 과정 1. 간단한 슬라이딩 윈도우 문제이다. 2. 집을 하나씩 찾으면서 보면 된다. 3. 그리고 보면 그냥 배열이랑 좀 다른거는 처음 맨 뒤쪽 집들은 최초 털어간 집에 대한 확인도 된다는거 4. 내가 풀어낸 방식은 그래서 [123][234][345][451][512] 이렇게이다. 5. 근데 여기서 중요한건 M == N 이면, 4번 방식에서 [123][231][312] 가 된..

알고리즘 공부 2024.10.12

[백준 1593번] 문자 해독 - java

문제 설명1. 해석하고 싶은 문자 W가 주어진다.2. 그게 중간에 들어가는 S가 주어진다..3. 이거 뭔소린가.. 엄청 헤맸는데, 말하자면 둘째줄 W의 각각 char 들이 순서와 상관없이 S에 어떻게 있는지를 물어보는 문제이다.즉, 주어진 보기를 보았을 때에첫 번째로 "Acad" (3번째 문자부터), 두 번째로 "cAda" (4번째 문자부터)에서 "cAda"와 동일한 문자 빈도를 가진 부분 문자열을 찾는 문제라는 것이다.4. 앞의 숫자 두개는 별의미 없다. 풀이 과정 1. 딱 봐도 S의 길이가 매우 길다. 2. 브루트포스로는 못풀것 같은데, 슬라이딩 윈도우를 통해 구현한다. 3. W의 문자들이 나타나는 갯수를 구해놓고, 그 크기만큼 S에서 하나씩 찾는다. 하나씩 더하고 빼면서 비교해주면 된다. 4.- [..

알고리즘 공부 2024.10.11

[HackerRank] 2d-array java 풀이

문제 설명1. 배열에 대해 1 1 10 1 01 1 1요만큼 해당하는 애들만 더하는것2. 크기는 정해져 있다. 풀이 과정 1. 어차피 크기는 정해져 있으니 내부에서 돌면서 저만큼 구해서 더해주면 된다. 2. 0 ~ n 의 크기라고 하면 1 ~ n-1 까지 구하면 된다는 느낌 3. 각 위치에 대해서 미리 갖고 있고 이걸로 사용할 것을 정하면 된다.    https://www.hackerrank.com/challenges/2d-array/problem?isFullScreen=true&h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=arrays

알고리즘 공부 2024.10.09