본문 바로가기

CS

(140)
[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개인 것으로 계산된다. 즉..
[2023 KAKAO BLIND RECRUITMENT] 개인정보 수집 유효기간 https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 구현 문제로, 주의할 점은 다음과 같다.모든 달이 28일까지 있다고 가정한다. 따라서 특정 날짜를 일수로 변환해서 날짜 간 비교하면 된다. ex, 2021.05.02 ➡️ 2021 * 12 * 28 + 5 * 28 + 2마침표(.)를 기준으로 문자열을 자르고 싶으면 split(".")이 아니라 split("[.]") 또는 split("\\.")을 사용해야 한다.split() 메소드는 파라미터로 정규..
99클럽 코테 스터디 23일차 TIL: [LeetCode] 786. K-th Smallest Prime Fraction https://leetcode.com/problems/k-th-smallest-prime-fraction/submissions/1284723688/ class Solution { public int[] kthSmallestPrimeFraction(int[] arr, int k) { int len = arr.length, numerator = -1, denominator = -1, fractionPosCovered = 0; double left = 0, right = 1; while(fractionPosCovered != k) { fractionPosCovered = 0; doubl..