99클럽 코테 스터디 20일차 TIL + 240814

Yellta·2024년 8월 13일
0

TIL

목록 보기
55/73

오늘의 코테 스터디 문제

https://leetcode.com/problems/ipo/description/
leetcode의 문제이다.

profit과 capital의 연관관게를 알게 된다면 나름 로직이 살살살살 떠오르는 문제
하지만 나는 PriorityQueue를 사용하는 방법을 고려하지 못해서 방법을 못찾음 ㅋ

class Solution {

    public int findMaximizedCapital(int k, int w, int[] profits, int[] capital) {

        int n= profits.length;

        List<int []>vp = new ArrayList<>();

        for(int i=0; i<n; i++){

            //Add the capital and profits pair

            vp.add(new int[]{capital[i], profits[i]});

        }

  

        //capital descending

        vp.sort((a,b) -> a[0]-b[0]);//capital - profits

        PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());

        int totalProfit =w, j=0;

  

        for(int i=0; i<k ; i++){

            //j < profits.length() && capital <= totalProfit

            while(j<n && vp.get(j)[0] <= totalProfit){//find case

                pq.offer(vp.get(j)[1]); //added the profits

                j++;// j -> for find idx

            }

            //could not found the projects with totalProfit

            if(pq.isEmpty())break;

  

            //All totalProfit -> It stored in the pq(reverseOrder) descending

            totalProfit += pq.poll();

        }

  

        return totalProfit;

    }

}

주석으로 달아놓았다.
이해가 잘 가지 않는다면 코드를 고대로 빼껴보는 것도 내가 좋아하는 방법이다. 배끼면서 로직을 이해하게 되거든

썩 보기좋은 자료는 아니지만 로직을 손으로 풀어본 것

오늘 내가 풀어본 코테 문제 유형

1. 자바를 이용한 정렬

난 지금까지 코테 준비를 c++로 해왔는데 자바로 다시 봐야할듯ㅋ 하다... 아무튼 c++에서의 정렬은 너무나도 쉬웠고 외우기도 좋았는데 자바는 Comparator를 직접구현해야하는 엄청난 불편함이 있었다. 물론 람다를 이용해 편하게 사용할 수 있지만 아직 어색하다 ㅋ

정렬 문제집1
위의 정렬 문제집은 간단한 정렬을 수행해 볼 수 있는 문제들이다. 풀려고 끙끙대기보단 저 문제를 기반으로 로직을 아예 통째로 외워버리는 걸 추천한다. 그러니까 답안보고 통째로 다 외워버리면 다른 문제를 풀 때 기반이 되는 문제들이란 뜻이다.

정렬문제집2
문제집1을 통해서 어느정도 익혔다면 문제집2를 통해서 살짝 활용해보는 수준이 필요하다. 이 두 문제집을 통해서 c++ 정렬을 마스터 했었으니 자바도 똑같이 할 예정이다...(자바는 쓸게 많아서 귀찮당)

참고로 Map을 정렬하는 것도 꼭 알아두면 좋다. 아니면 2차원 배열이나 참고로 나는 java로 Map배열을 매일 헷갈려한다. 너무 길어서 공부하기 싫은 느낌ㅋ

2. DP

DP를 이용해서 풀릴것 같은 문제를 마주했는데 테스트케이스 1개를 통과하지 못했다. 아쉽 해당 테스트케이스에서 어떤게 틀린지 잘 모르겠다

사실상 DP는 많이 풀어보고 점화식을 많이 만들어야 익숙해지는 것 같다.
백준 DP문제 리스트
아직 DP에 입문한지 얼마 안돼서 잘 모르겠지만 DP는 많이 풀어봐서 감을 익히는 것이 좋다고 생각한다. 위의 링크는 DP문제를 익힐 수 있는 문제집이다! 바킹독의 실전 알고리즘을 참고했다.

문자열 관련

문자열 관련 문제 이건 String 많이 다뤄보면 알아서 익히게 되는 문제 따로 문제링크를 가지게 된 건 없고 주로 사용하는 메소드들을 외우면 되는 느낌

1. charAt(i)

String에서 단어 하나 뽑을 때 사용하는 로직 생각보다 진짜 많이 사용한다.

2. int n = charAt(i) -'0' or 'A'

주어진 문자가 숫자형태 혹은 대/소문자 형태를 int형으로 저장할때 쓴다.
이 방법은 counting sort를 할 때도 사용하고(n을 인덱스로 사용한다던가) 문제를 풀 때 여러모로 자주 등장한다.

3. char[] c = string.toCharArray()

String을 char 배열로 바꿀 때 사용한다.


REVIEW

코테 스터디 이외의 문제들은 다소 쉬운 문제들이다. 알고리즘을 접하면 가장 처음 만나는 문제들이 아닌가 싶다. 그래서 허점이 드러나는 것 같기도 ㅋ. 자료구조를 확실하게 알고가야 나중에 문제 풀때 이런 저런 활용이 가능하니까 말이다. (특히 난 문제풀때 PriorityQueue를 거의 생각하지 않는 듯하다 정렬이 있다면 무조건 생각해보자)
그래도 다행인건 헷갈리고 알지 못했던 알고리즘 시간 복잡도를 구할 수 있게 된 것. 3개월 전 처음 공부할때 뭔 개소리야하면서 어리둥절하고 이해못했던게 생각이 난다. ~~~많이 컷구나 나 자신

앞으로 집중할 과제들

코테

진짜 코테 죽어라고 공부할 듯 싶다. 코테 시험을 봤을 때 최소 합격 컷? 안전빵으로 만들어 놓는 수준까지는 만들어놓지 않을까? 지금은 그 정도 수준은 살짝 안되는 느낌이다. 특히 DFS,BFS 응용 에서 많이 주춤하고 DP도 마찬가지이다. 시뮬레이션은 말할 것도 없음, 그리고 탐색에 사용되는 그리디..뭐 이런... 다 공부해야하네 ㅠ 진짜 죽어라고 공부하자 제발 풀 문제가 너무 많아 이미 다섯개나 밀려있다고

이력서

이력서는 계속 고치고 점검할 예정이다. 어떤 점을 주의해서 작성해야 하는지 잊지 말도록 하자.

  • 가독성 좋게
  • 눈에 잘 보이게 강조 색상 넣기
  • 내가 보여주고 싶은 역량을 보여줄 것
  • 프로젝트에서 기여한 점을 간략히 소개할 것
  • 두괄식 짧고, 간결하게

프로젝트(제일 덜 집중할듯)

하루에 짤짤이라도 프로젝트를 조금 신경써볼 예정이다...
아마 코테/이력서보다 몰입 비용?이 조금 덜 들어가지 않을까 싶다.


CS/ java/Spring공부는 잠시 일시정지... 저 최소 선을 맞춘 다음에 비율을 조금씩 늘려나갈 예정이다. 저 세 가지도 도저히 뺴놓을 수 없는 것들이니까. 지금 당장 중요도가 코테/이력서가 시급할 뿐...


#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL

profile
Yellta가 BE개발해요! 왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜 가 제일 중요하죠

0개의 댓글