일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ES
- 데이터베이스
- 읽기쉬운코드
- Baekjoon
- 백준
- cleancode
- 스프링
- 알고리즘
- 코드
- 코딩
- Spring
- kotlin
- 애자일기법
- Elasticsearch
- 그리디
- 그리디알고리즘
- 자바
- API
- 코딩테스트
- 엘라스틱서치
- framework
- 프레임워크
- 애자일프로그래밍
- spring boot
- 개발자
- database
- Java
- JPA
- 클린코드
- 개발
- Today
- Total
목록Java (40)
튼튼발자 개발 성장기🏋️

문제 기출 : [https://www.acmicpc.net/problem/2875] 풀이 방법 [그리디알고리즘] 접근 문제만 한 100번 읽어본거 같다...ㄷㄷ 아ㅏㅏㅏㅏㅏㅏㅏㅏ주 간단하게 풀 수 있드아 여학생 수 + 남학생 수 - 인턴쉽 참여 수가 총 인원이 되고, 팀 하나씩 꾸릴때마다 총 인원은 -3. N은 -2씩, M은 -1씩 그리고 팀의 수는 +1씩 해서 반복문 돌려주기만하면된다. 이 반복문은 당연히 N이 2보다 같거나 크고, M이 1보다 같거나 크고, 총 인원이 3보다 같거나 클 동안에만 돌아야한다. 문제 풀이 public class Main { public static void main(String[] args) { BufferedReader br = new BufferedReader(new ..

문제 기출 : [https://www.acmicpc.net/problem/1343] 풀이 방법 [그리디알고리즘] 접근 받은 문자열에서 사전식 정렬을 위해 "AAAA"부터 replace를 한 다음 "BB"로 replace를한다. 만약 "X"가 남아있다면 불가능 하므로 -1 출력, "X"가 없다면 정답이 될 것이다. 아주아주아주 허무할 정도로 간단하다... 나는 무려 3시간 가량을 낭비했다... 다음과 같은 헛짓거리(?)를 할 수 있는 문제. 1. 사전식 정렬이 필요할 것 같아 보임 2. 4의 배수와 2의 배수를 생각할 수도 있음 3. 홀수와 짝수를 나눌 생각을 할 수 있음 4. "."을 기준으로 나열된 X에 대해 탐색할 가능성이 있음 5. etc 심지어 엄청난 런타임 에러때문에 식은땀을 흘렸다... 그러나..

문제 기출 : [https://www.acmicpc.net/problem/1543] 풀이 방법 [그리디알고리즘] 접근 내가 문제를 잘못 이해 했는지 두 시간 가량을 잘못된 방향으로 풀이되어서 상당히 시간낭비하였다. 문제를 읽어보면 "찾는 단어가 최대 몇 번 중복되지 않게 등장하는지?"이다. 주어진 조건 "몇 번부터든지 시작 index는 모두 가능"을 생각하여 나는 코드를 작성하였지만 전부 다 실패... 아무리 문제를 되새김질해도 난 모르겠다... 그래서 다른 블로그를 참고하였더니 문제 이해를 도와주었다...ㅠㅠ 주어진 문자열에서 찾을 문자열을 찾되, 중복되지 않게 등장하는 최대값을 구해야한다. 즉 주어진 문자열에서 찾을 문자열을 찾고 찾은 문자열을 빼버리면서 카운트 하면 되는 아주 간단한 문제였다.. 나..

문제 기출 : [https://www.acmicpc.net/problem/2437] 풀이 방법 [그리디알고리즘] 접근 정답 비율이 37%라서 겁먹었지만 아주 쉬운 문제다. 최소값을 구하라고 했으니까 당연하게도 오름차순으로 정렬이 우선이다. 그래서 작은 무게의 추를 먼저 가지고 와서 체크를 할꺼다. 새로운 추를 가지고 왔는데 만약 이 새로운 무게가 저울의 (무게의 합 + 1)보다 크면 저울의 (무게의 합 + 1)이 최소값이 될 수 밖에 없다. 문제 풀이 public class Main { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int answ..

문제 기출 : [https://www.acmicpc.net/problem/2529] 풀이 방법 [백트래킹 : backTracking] 접근 가장 먼저 default 값을 만들자. 최대값의 경우에는 9부터 -1씩 해가면서 채워주고, 최소값의 경우에는 -부터 _1씩 해가면서 채워준다. 이제부터 backTracking 기법을 사용하여 부등호를 만족하는지 체크한다. 부등호를 읽어올 필요없이 그냥 javascript engine을 사용해서 boolean 값을 받기만 하면 된다. 부등호가 만족하지 않는다면 앞의 숫자와 자리를 바꿔준다. 왜냐하면 최대값과 최소값을 구해야하기 때문이다. 이런식으로 체크를 끝까지 하게 되었을 때 나온 값이 바로 최대값 최소값이 될 수 있다. 단 한 번의 backTracking으로 최대값..

문제 기출 : [https://www.acmicpc.net/problem/2352] 풀이 방법 #1 [backTracking] 접근 2일 동안 이 문제에만 몰두했다. 그냥 생각나는대로 경우의수를 나열하여 백트래킹 기법으로 하나하나 탐색하여 체크했다. 문제는 풀었지만 당연하게도 시간초과..(정답인지도 모르겠다.) 그래서 다른 방법을 채택했다. 문제 풀이 #2 public class Main { private static int maxCount = 0; public static void backTracking(int[] input, int start, int end) throws Exception { int count = 1; int temp = end; int flag = 0; if(start == inp..

문제 기출 : [https://www.acmicpc.net/problem/2217] 풀이 방법 [그리디알고리즘] 접근 1. N개의 버틸 수 있는 중량을 배열에 저장하여 sort. 2. 버틸 수 있는 최대 중량을 구해야하므로 큰 값 먼저 탐색하여 다음 식을 적용 i번째 로프의 버틸 수 있는 중량 x (로프의 수 - i) 3. 최대값이 정답이 된다. 문제 풀이 public class Main { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int answer = 0; try { int N = Integer.parseInt(br.readLine());..

문제 기출 : [https://www.acmicpc.net/problem/1946] 풀이 방법 [그리디알고리즘] 접근 문제를 읽고 "이건 무조건 객체 정렬이다!"라고 생각했다. 가장 먼저 서류 설적과 면접 성적을 따로 받고 두 성적에 대해 제한을 두고 있으니 당연한 것이 아닌가. 객체 정렬 후 오직 면접 성적만을 비교하여 큰 값을 갱신해가며 카운팅하면 된다. 문제 풀이 public class Main { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int answer = 0; try { int testCase = Integer.parseInt(b..