| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 백준 1504 java
- go
- rabbitmq 싱글톤
- java 팩토리얼 개수
- spring mongodb switch
- mongodb lookup
- nodejs rabbitmq
- kotiln const val
- java 백준 1509
- Java Call By Refernce
- java 1238
- 익명 객체 @transactional
- spring mongodb
- kotiln const
- 백준 2252 줄세우기
- java 파티
- java 1509
- ipfs bean
- javav 1676
- 안정해시
- spring mongoTemplate switch
- 자바 1676
- 백준 연결요소 자바
- Claude Intelij 연결
- spring mongoTemplate
- 백준 특정한 최단 경로
- ipfs singletone
- kotiln functional interface
- Spring ipfs
- 자바 백준 팩토리얼 개수
- Today
- Total
목록코테 (80)
공부 흔적남기기
문제의 요점은 n이 커지면서 팩토리얼의 값을 변수에 저장할 수 없다는 것이다.그럼 고민해봐야할게 어떨 때 숫자가 0으로 끝나는지 고민해봐야한다. 차근 차근 10부터 50, 100, 150, 1500, 10000, 0으로 끝나는 숫자들을 확인해보면 1*10, 5*10, 15*10, 15*10*10, 10*10*10*10 인것을 알 수 있다. 즉 문제의 답은 해당 숫자에 10이 얼마나 들어가 있는지 확인해보면 된다, 그럼 각 반복문을 돌면서 10으로 나눠 떨어진다면 10으로 계속 나눠주고 count를 해주면 될까? 안된다. 왜냐하면 10은 2 * 5의 구성으로도 가능하기 때문이고 팩토리얼은 연속된 숫자들의 곱으로 이전 값에 영향을 받는다, 따라서 해당 숫자가 10으로 나눠 떨어질때까지 반복하고 5로 나눠질때..
템플릿 메소드 패턴, 전략패턴, 템플릿 콜백 패턴 위 3가지의 디자인 패턴은 어떤 공통점을 가지고 있을까? 위 디자인 패턴들은 같은 목적을 가진 패턴들이다. 복잡한 코드속에서 반복되는 부분을 외부로 템플릿화(공통화?) 시켜 결합성을 낮추고 (단일 책임 원칙) 변하는 부분(알고리즘 군)을 구현해 템플릿을 통해 실행시키는 방식이다. 예를 들어 코드의 모든 곳에 다음과 같이 로그를 남기는 코드가 있다고 가정해보자 @Service class ItemServiceDirtyCode( private val itemRepository: ItemRepositoryDirtyCode, private val logService: LogServiceDirtyCode ) { fun getItems(): List { var tra..
문제는 간단하다 내가 소유하고 있는 카드들과 존재여부를 확인하고 싶은 카드들을 입력받는다. 범위를 보면 -10000000~10000000 로 int로도 처리 된다. 나는 처음에 생각한게 먼저 단순히 target을 python의 in연산자로 찾으면 O(N)의 시간 복잡도로 찾아지게 되므로 시간초과가 뜰 것같았다. 그래서 리스트에서 값을 찾을 때 O(logN)의 속도로 찾을 수 있는 이분탐색을 사용해서 찾을려고 했다. 근데 멍청하게 O(logN)에서 찾은 애들은 remove를 시켜주겠다는 생각을 했다. list에서 remove를 해주는 것이 더빠르다고 생각해서 remove를 해주었다. 하지만 일반 적인 생각말고 시간복잡되 관점에서 remove는 찾는 것과 마찬가지로 O(N) 시간복잡도를 가진다. 그래서 O(..
Point 1. 코드를 작성할때에는 항상 주위의 코드와 더불어 코드를 작성하기 마련이다. 이때 주위의 코드를 읽는 시간이 길어질 수록 개발기간이 늘어나고, 안 좋은 코드를 작성할 가능성이 높아진다. 2. 코드를 읽는데 굉장히 시간이 많이 걸리고 1을 바꾸기위해 10을 바꿔야하기 때문에 유지, 보수, 새 기능 추가에 비용이 너무 높아진다. 3. 좋은 코드의 책임은 모두 프로그래머에게 있다. 촉박한 시간, 업무량 등을 핑계로 나쁜코드를 작성하게 되는데 이는 오히려 시간을 늦추게 된다. 주의깊게 좋은 코드를 작성하는 것이 시간을 줄이는 좋은 방법이다. 4.우아한( 보기 즐거운 ) 코드를 작성하자. 5.깨끗한 코드는 잘 쓴 문장 처럼 읽혀야 한다. 6.다른사람이 보기도 쉽고 고치기도 쉬운 코드를 작성하자. 7...
조건 : n보다 크고 2n보다 작거나 같은 소수는 적어도 하나 존재한다. 소수 문제는 무조건 : 에라토스테네스의 체를 사용하자! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true) { int n = Integer.parseInt(br.readLine()); if(n==0){ break; } Syste..
조건:설탕을 정확하게 N킬로그램 3킬로그램 봉지와 5킬로그램 봉지 최대한 적은 봉지를 들고가려고 한다. N킬로그램 배달해야 할 때 봉지 몇개를 가져가면 되는지 그 수를 구하는 프로그램 정한 양의 봉지로 만들 수 없다면 -1 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(b..
조건 : 높이가 V인 나무막대 낮에 A만큼 올라가고 자는 동안 B만큼 미끄러진다. 속도 제한이 있어 반복문사용하면 시간 초과 import java.io.*; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.re..
조건 -> 세정수 H는 호텔의 층수 W는 각 층븨 방수 N은 몇번째 손님인지 엘레베이터의 거리는 상관 하지 않는다. 만약 거리가 같다면 아래층 방을 선호한다. import java.io.*; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.parseInt(br..
import java.io.*; import java.util.ArrayList; import java.util.List; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //String 하나를 입력받고 String s = br.readLine(); //소대문자 구분없이 세고 출력이 대문자기 때문에 대문자로 바꿔줌 s = s.toUpperCase(); char[] chars = s.toCharArray(); int[] count = new int[s.length()]; List list = n..
import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //String 하나를 입력받고 //크로아티아 알파벳에 맞게 replace를 해준다 String[] arr = new String[]{"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="}; String s = br.readLine(); for(int i =0; i