2023.05.02.TUE

ronglong·2023년 5월 2일
0
  • RDBMS 사용 이유
    외래키, 기본키 이용해서(조인) 쿼리 적게 날려서 DB 접근 줄이고 리소스&비용 절감하려고.

[ 프로그래머스 ]

  • 두 개 뽑아서 더하기
    : 정답률 67%. set을 int[]로 변환할 때는 스트림을 사용해서 직접 mapToInt 과정을 거쳐야한다. 안 그러면 Object[]가 됨.
    set.stream().mapToInt(Integer::intValue).toArray();
    다른 사람 풀이 보니까, 정렬을 배열에서 하지 말고 스트림에서 한 번에 했으면 더 좋은 코드가 되었을 것 같다.
    HashSet이 아니라 TreeSet을 쓰면 추가하면서 정렬도 자동으로 된다고 함.
import java.util.*;

class Solution {
    public int[] solution(int[] numbers) {
        //정답을 받을 Set을 만들기 
        Set<Integer> set = new HashSet<>();

        //이중 for문 돌려서 더한 값을 넣기
        for(int i=0; i<numbers.length; i++){
            for(int j=i+1; j<numbers.length; j++){
                set.add(numbers[i]+numbers[j]);
            }
        }

        //배열로 반환하고, 정렬해서 리턴. 
        int[] answer = set.stream().mapToInt(Integer::intValue).toArray();
        Arrays.sort(answer);

        return answer;
    }
}
  • 모의고사
    : 정답률 61%. 수도코드를 제대로 작성해서 풀어냈다.
    Map을 사용하면 학생의 인덱스를 정확하게 얻을 수 있다는 장점이 있어서 사용했다.
    나는 String[]을 사용했는데, 다른 사람들은 대부분 배열에 값을 넣었더라.
    Map 사용을 많이 안 해봐서 entrySet() 사용하는 게 어색했다.
    앞으로는 자주 이용해야지.
import java.util.*;

class Solution {
    public int[] solution(int[] answers) {
        //각각의 수포자가 찍는 방식을 String[]에 담는다.
        String[] students = new String[]{"12345", "21232425", "3311224455"}; 

        //각자의 점수를 담을 Map을 만든다. 
        Map<Integer, Integer> grades = new HashMap<>();

        //for문으로 시험 정답과 비교해서 점수를 리스트에 담는다.
        for(int i=0; i<3; i++){
            int count = 0;
            for(int j=0; j<answers.length; j++){
                if(answers[j]==students[i].charAt(j%students[i].length())-'0'){
                    count++;
                }
            }
            grades.put(i, count);
        }

        //가장 높은 점수를 찾는다. 
        int max = Collections.max(grades.values());

        //최고점을 받은 사람(키+1)을 List에 담아서 int[]로 리턴한다. 
        List<Integer> result = new ArrayList<>(); 

        for(Map.Entry<Integer, Integer> entry : grades.entrySet()){
            if(entry.getValue()==max) result.add(entry.getKey()+1);
        }

        return result.stream().mapToInt(i->i).toArray();
    }
}

[ 느낀 점 ]

이번주에 공부할 알고리즘 및 자료구조 : BFS, DFS, 이진 탐색, DP

그리고 슬슬 SQL 공부도 하고,, 경험삼아서라도 이력서도 내봐야할 것 같다.

0개의 댓글