import java.util.ArrayList;
import java.util.List;
import java.util.HashSet;
import java.util.Set;
import java.util.HashMap;
import java.util.Map;
class Solution {
public int solution(int[] topping) {
int answer = 0;
Map<Integer, Integer> toppingA = new HashMap<>();
for(int i : topping){
if(toppingA.containsKey(i)){
toppingA.put(i, toppingA.get(i)+1);
}
else{
toppingA.put(i,1);
}
}
Set<Integer> toppingB = new HashSet<>();
for(int i : topping){
toppingB.add(i);
toppingA.put(i, toppingA.get(i)-1);
if(toppingA.get(i) == 0) toppingA.remove(i);
if(toppingB.size() == toppingA.size()) answer += 1;
}
return answer;
}
}
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public String solution(String number, int k) {
String answer = "";
int[] numberList = new int[number.length()];
for(int i=0; i < number.length(); i++){
numberList[i] = Character.getNumericValue(number.charAt(i));
}
if(k == number.length()-1) return String.valueOf(Arrays.stream(numberList).max().getAsInt());
while(k>0){
if(k == numberList.length){
numberList = new int[0];
k = 0;
break;
}
int maxNumber = -1;
int maxIdx = -1;
for(int i = 0; i <= k; i++){
if(numberList[i] > maxNumber){
maxNumber = numberList[i];
maxIdx = i;
}
}
k -= maxIdx;
answer += String.valueOf(numberList[maxIdx]);
numberList = Arrays.copyOfRange(numberList, maxIdx+1, numberList.length);
}
for(int num : numberList){
answer += String.valueOf(num);
}
return answer;
}
}54
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Stack;
class Solution {
public String solution(String number, int k) {
String answer = "";
Stack<Character> stack = new Stack<>();
for(char c : number.toCharArray()) {
while(!stack.empty() && stack.peek() < c && k > 0){
stack.pop();
k -= 1;
}
stack.push(c);
}
while(k > 0){
stack.pop();
k -= 1;
}
for(char c : stack){
answer += c;
}
return answer;
}
}
import java.util.Map;
import java.util.HashMap;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 1;
int totalWeight = 0;
Map<Integer, Integer> bridge = new HashMap<>();
for(int i = 0; i < truck_weights.length; i++){
bridge.put(i, 1);
totalWeight += truck_weights[i];
while(i != truck_weights.length-1){
answer += 1;
// 다리에 있는 트럭들 한칸씩 전진
List<Integer> removeList = new ArrayList<>();
for(int truck : bridge.keySet()){
int position = bridge.get(truck);
if(position == bridge_length){
removeList.add(truck);
}
else{
bridge.put(truck, position+1);
}
}
// 다 건너 트럭 제거
for(int removeKey : removeList){
totalWeight -= truck_weights[removeKey];
bridge.remove(removeKey);
}
// 다음 트럭 추가될 수 있는지 확인
if(totalWeight + truck_weights[i+1] <= weight) break;
}
}
return answer + bridge_length;
}
}
서비스 종료 14일전에 “사전에 고지한 바와 같이” 자동 연장이 된다는 알림톡/메일 발송
이후에 고객사의 연장 의사 물어보고, 연장 & 종료가 확정이 될 때 다시 알림이 나감.
서버 CI/CD 구축 (application.yml 파일 분리 및 github action 세팅)
AWS 서버 EC2 & RDS 세팅
그 외 로컬 변수로 세팅되어 있는 부분 수정하기.
Map<Integer, Integer> mapA = new HashMap<>();
Set<Intger> setA = new HashSet<>();
Collections
객체끼리는 서로 자료 구조를 쉽게 변환할 수 있다.
List<Integer> listA = new ArrayList<>();
listA.add(1);
listA.add(2);
listA.add(3);
listA.add(4);
Set<Integer> setA = new HashSet<>(listA); // 이런 식으로 변형이 가능하다.