1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/120956 2. 풀이 문자열을 어떻게 다루면 좋을까를 묻는 문제. 처음봤을 때는 옹알이가 나오는 모든 경우의 수를 생각하는 거였는데, 구현방식이 잘 떠오르지도 않았다. 다행히 옹알이 문자가 포함관계에 있는게 없어서 치환으로 풀었다. 나는 1로 치환했는데, 다른거로 치환해도 된다. 처음엔 ""으로 치환했었는데, 다행히 반례가 문제 중에 있어서 쉽게 해결했다. 없었으면 찾는데 좀 걸렸을 듯 3. 코드 import java.util.*; import java.util.stream.Collectors; class Solution { public int solution(String[] babblin..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/131705 2. 풀이 이 문제를 보자마자 떠올려야할 게 있다. 조합(Combination) 문제라는 것. 때문에 대략적인 시행 횟수를 예측할 수 있다. 주어진 조건을 보면 3 ≤number의 길이 ≤ 13 을 보면 최대 시행 횟수는 13C3 = 286인 걸 알 수 있다. 조건만 맞추면 다중 for문을 마음껏 써도된다는 뜻이다. 모든 조건을 탐색하기 때문에 Brute Force 문제라고도 할 수 있겠다. 3. 코드 class Solution { public int solution(int[] number) { int answer = 0; for(int i =0; i
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/133502 2. 풀이 자료구조를 조금 안다면, Stack문제라는걸 바로 파악할 수 있다. 4개를 pop 했을 때, 후입선출 자료구조기 때문에 역순 빵 - 고기 - 야채 - 빵인지 판별 해서, 햄버거가 완성되면 빼고 완성되지 않으면 역순으로 삽입하면된다. 배열 값이 1인 빵의 개수를 센다. 스택에 삽입 빵의 개수가 짝수가 됐을 때부터 4개씩 pop하면서 햄버거인가 판별한다. 햄버거로 판별되면, 정답+1 / 빵개수 -2 햄버거가 아니면 역순으로 삽입 개인적으로 코드는 숏 코딩이고 뭐고 직관적인게 최고라고 생각한다. 내가 짠 코드가 최고란 뜻은 당연히 아니다.. 3. 코드 import java...
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/138477 2. 풀이 어쩌다 보니 계속 우선순위 큐 문제를 풀게 됐다. peek()을 알면 쉽게 풀 수 있다. peek()은 우선순위 큐의 값을 pop 하지 않고, 맨 앞 값을 가져올 수 있다. 오름차순으로 자동 정렬되는 우선순위 큐에서는, 맨 앞 값이 최하위 점수가 된다. 정리하면 아래와 같은 순서로 구현했다. 우선순위 큐와 정답을 ArrayList로 저장할 answerList 정의 우선순위 큐에 k개가 다 차기 전에는 우선순위 큐에 무조건 삽입 peek() 함수를 통해 우선순위 큐의 맨 앞의 값을 가져와 answerList에 삽입 k개가 다 차면, score와 우선순위 큐의 맨 앞의 값..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/134240 2. 풀이 팰린드롬을 만드는 문제 칼로리 높은 것을 먼저먹기 때문에, 마지막 행렬의 index부터 처리하도록 한다. 매우 난이도가 낮은 문제다. 3. 코드 class Solution { public String solution(int[] food) { String answer = "0"; for(int i=food.length-1; i>=1;i--){ if(food[i] / 2 > 0) { String eatable = String.valueOf(i); for(int j =0; j
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/135808 2. 풀이 1. 우선순위 큐를 역순정렬되도록 정의 2. 우선순위 큐에 삽입한다. 반복문을 사용하긴 했지만, N번이기 때문에 별 문제는 없다. 3. while문을 통해 이익 계산식을 수행한다. - 역순 정렬을 했기 때문에, 한 상자에 들어가는 마지막 사과가 전체 가격을 결정한다. 4. 마지막 값만 관심이 있고 나머진 다 pop 처리 3. 코드 import java.util.Collections; import java.util.PriorityQueue; class Solution { public int solution(int k, int m, int[] score) { // 우선순위..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/118666 2. 풀이 성격 유형의 갯수가 많지 않기 때문에 하드 코딩하고 풀면 쉽다. 그리고 성격 유형의 점수를 직관적으로 구분하기 위해 모르겠음을 0점으로 fix 해서 result 행렬에 성격 유형 점수의 통계를 구했다. 3. 코드 class Solution { public String solution(String[] survey, int[] choices) { String answer = ""; int[] score = new int[]{-3,-2,-1,0,1,2,3}; String[] type = new String[]{"RT","CF","JM","AN"}; String[] rever..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/136798 2. 풀이 요약하면, number 까지의 모든 수의 약수를 구하고 limit과 비교하는 문제다. number의 최대가 10만이기 때문에, 일반적인 약수를 구하는 방법(이차원 for문과 나머지로 비교하는 공식으로 만든 방법)으로 구현하면 특정 테스트 케이스에서 timeout이 난다. 그래서 약수를 구하는 공식의 계산량을 줄이는 방법이 필요하다. 나는 아래와 같은 방식으로 구현했다. 1을 약수로 갖는 수에 count 추가 2를 약수로 갖는 수에 count 추가 3을 약수로 갖는 수에 count 추가 .... number를 약수로 갖는 수에 count 추가 이러면 number 이하의 ..
- Total
- Today
- Yesterday
- elasticsearch
- OpenAI
- AWS
- AWS EC2
- openAI API
- ChatGPT
- AOP
- lambda
- 후쿠오카
- GIT
- java
- Elastic cloud
- S3
- MySQL
- Log
- 티스토리챌린지
- Kotlin
- OpenFeign
- 람다
- springboot
- EKS
- JWT
- Spring
- 오블완
- docker
- serverless
- 스프링부트
- terraform
- cache
- CloudFront
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |