본문 바로가기

전체 글

(225)
99클럽 코테 스터디 28일차 TIL: [LeetCode] 2145. Count the Hidden Sequence https://leetcode.com/problems/count-the-hidden-sequences/description/class Solution { public int numberOfArrays(int[] differences, int lower, int upper) { long a = 0, ma = 0, mi = 0; for (int d: differences) { a += d; ma = Math.max(ma, a); mi = Math.min(mi, a); } return (int)Math.max(0, (upper - lower) - (ma - mi) + 1); }}
99클럽 코테 스터디 27일차 TIL: [LeetCode] 2860. Happy Students https://leetcode.com/problems/happy-students/description/class Solution { public int countWays(List arr) { Collections.sort(arr); int ways=0, ans=0; if(arr.get(0)>ans){ ways++; } ans++; for(int i=1;ians){ ways++; } ans++; } if(arr...
[2024 KAKAO WINTER INTERNSHIP] 주사위 고르기 https://school.programmers.co.kr/learn/courses/30/lessons/258709 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 단순한 문제 같았지만 어려웠던 문제이다. 대략적인 아이디어는 다음과 같다.A가 가져갈 주사위의 조합을 만든다.각 조합에 대해, A가 자신의 주사위들을 던졌을 때 나올 수 있는 결과 리스트와 B가 자신의 주사위들을 던졌을 때 나올 수 있는 결과 리스트를 구한다.그리고 A의 결과 리스트와 B의 결과 리스트를 비교해서, A가 이기는 횟수가 가장 많은 조합이 정답이다.위와 같이 계산하면 시간 복잡도는 다음..
99클럽 코테 스터디 26일차 TIL: [LeetCode] 275. H-Index II https://leetcode.com/problems/h-index-ii/description/ class Solution { public int hIndex(int[] citations) { int n = citations.length; int start = 0; int end = n-1; while(start
[2023 KAKAO BLIND RECRUITMENT] 이모티콘 할인행사 https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 자잘한 조건이 많으므로 이를 놓치지 않고 잘 풀어야 한다.우선 dfs를 사용하여 이모티콘들의 할인 조합을 만든다. 그리고 각 조합마다 탐색하며, 플러스 가입 수와 이모티콘 판매액을 구한다.그리고 플러스 가입자를 최대한 늘리는 것이 우선할 목표이고, 그 다음 목표가 이모티콘 판매액을 늘리는 것이므로 이 목표에 맞게 answer 값을 갱신한다.참고로 dfs를 할 때 배열을 사용할 경우, 하나의 배열은 ..
99클럽 코테 스터디 25일차 TIL: [LeetCode] 1971. Find if Path Exists in Graph https://leetcode.com/problems/find-if-path-exists-in-graph/description/class Solution { boolean[] vis; List> gr; void dfs(int node) { if (vis[node]) return; vis[node] = true; for (int child : gr.get(node)) { if (!vis[child]) dfs(child); } } public boolean validPath(int n, int[][] edges, int source, int destination) { vis..
[2023 KAKAO BLIND RECRUITMENT] 표 병합 https://school.programmers.co.kr/learn/courses/30/lessons/150366# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 유니온 파인드 + 구현 문제이다. 문제 풀이 아이디어 자체는 어렵지 않은데 구현 중간중간 실수하고 헷갈려서 헤맸다.. 특히 유니온 파인드를 통해 여러 집합을 하나의 집합으로 merge하고 반대로 unmerge하기도 하는데, 이때 생각을 잘 해야 한다.merge 된 노드 간에는 모두 최상위 부모 노드가 같다. 즉, parent[][] 값 자체는 다를 수 있지만, find() 메소드를 통해 얻게 되는..
99클럽 코테 스터디 24일차 TIL: [프로그래머스] 방의 개수 https://school.programmers.co.kr/learn/courses/30/lessons/49190 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 주의할 점은 다음과 같다.방이 되기 위해선 다음 두 조건을 모두 만족해야 한다.이미 방문한 노드를 재방문 하는 경우해당 간선이 처음 생성된 간선인 경우이차원 배열을 사용하려면 new int[200,001][200,001]의 크기의 배열이 필요하다. 따라서 이차원 배열을 사용할 수 없으며, 대신 Map을 사용한다. 다음과 같이 교차점이 있을 경우 위 로직대로 생각하면, 방이 1개인 것으로 계산된다. 즉..