TIL - 2023/09/12

Hoony·2023년 9월 12일
0

Daily

목록 보기
30/30

💼 오늘 작업 내용

1. 코딩테스트 공부 (JAVA)

  • programmers - 132265 - 롤케이크 자르기
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;
    }
}

  • programmers - 42883 - 큰 수 만들기
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

  • programmers - 42883 - 큰 수 만들기 (Greedy)
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;
    }
}

  • programmers - 다리를 지나는 트럭 - 42583
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;
    }
}

2. [RIGHT] 전문가 자동 연장 알림톡/재피어 세팅

서비스 종료 14일전에 “사전에 고지한 바와 같이” 자동 연장이 된다는 알림톡/메일 발송

이후에 고객사의 연장 의사 물어보고, 연장 & 종료가 확정이 될 때 다시 알림이 나감.



3. [NearTube] 크롬 익스텐션 배포하기 준비

  • 서버 CI/CD 구축 (application.yml 파일 분리 및 github action 세팅)

  • AWS 서버 EC2 & RDS 세팅

  • 그 외 로컬 변수로 세팅되어 있는 부분 수정하기.




💡 새로 알게된 점


Java의 HashMap / HashSet 사용법

Map<Integer, Integer> mapA = new HashMap<>();
Set<Intger> setA = new HashSet<>();

List to Set

Collections 객체끼리는 서로 자료 구조를 쉽게 변환할 수 있다.

List<Integer> listA = new ArrayList<>();
listA.add(1);
listA.add(2);
listA.add(3);
listA.add(4);

Set<Integer> setA = new HashSet<>(listA); // 이런 식으로 변형이 가능하다.
profile
Just Do it!

0개의 댓글