TIL Java

내일배움캠프 22일차 TIL _ 5주 3일차

mad038 2024. 5. 16. 22:19

 

  • 오늘 있었던 일
    • 개인과제
    • 알고리즘

SPRIONG

  • 스프링 정리

 

알고리즘 문제 풀기

     ●  카드 뭉치

더보기

● 카드 뭉치 //링크

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        int[] answer = new int[targets.length];
        int cont = 0;

        for(String target : targets){
            for(String tar : target.split("")){
                List<Integer> list = new ArrayList<>();

                for (int i = 0; i < keymap.length ; i++) {
                    String[] key = keymap[i].split( "" );
                    for (int ii = 0; ii < key.length ; ii++) {
                        if(tar.equals(key[ii])){
                            list.add(ii+1);
                            break;
                        }
                    }
                }
                if(!list.isEmpty()){
                    answer[cont] += list.stream().min(Integer::compareTo).get();
                }else{
                    answer[cont] = -1;
                    //answer = new int[]{-1};
                    break;
                }
            }
            cont++;
        }

        return answer;
    }
}
  • 첫 시도때 태스트 문제는 없었지만 14번 이하로 에러가 났다.
    • 문제 지문에
      • 목표 문자열을 작성할 수 없을 때는 -1을 저장합니다.
    • 아 전부가 아니라 인덱스 하나 구나 
      • 실패
      •                 }else{
                            answer = new int[]{-1};
                            break;
                        }
      • 성공
      •                 }else{
                            answer[cont] = -1;
                            break;
                        }
  • 밑은 다른 사람의 풀이
  • import java.util.*;
    import java.util.stream.*;
    
    class Solution {
        public int[] solution(String[] keymap, String[] targets) {
            HashMap<String, List<String>> map = new HashMap<>();
            for(String key : keymap){
                map.put(key, Arrays.stream(key.split("")).collect(Collectors.toList()));
            }
            int[] result = new int[targets.length];
            for(int index = 0; index < targets.length; index++){
                String[] split = targets[index].split("");
                int totalCount = 0;
                for(String alphabet : split){
                    int count = Integer.MAX_VALUE;
                    for(String key : map.keySet()){
                        if(key.contains(alphabet)){
                            count = Math.min(count, map.get(key).indexOf(alphabet) + 1);
                        }
                    }
                    if(count == Integer.MAX_VALUE) continue;
                    totalCount += count;
                }
                if(totalCount == 0) totalCount = -1;
                result[index] = totalCount;
            }
            return result;
        }
    }
  • 대부분 비슷하게했다.

 

  


당일 회고

  • 개인 과제 어려워.....