본문 바로가기

Study Log/Algorithm12

프로그래머스 / [PCCP 기출문제] 2번 / 석유 시추 https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 내가 푼 풀이[정리]DFS를 이용하여 인접한 석유들의 size를 구하고 oil변수에 column별 시추할 수 있는 석유의 양을 더해서 저장한다.DFS가 아닌 BFS를 사용해도 된다.제일 시간을 많이 들인 부분maxC를 해서 최대 column을 계산하고 넣는건 했는데 minC 계산하는걸 빼먹어서 계속 오답이 나왔다.import java.util.*;class Position{ int r=-1, .. 2024. 9. 27.
프로그래머스 / 도넛과 막대 그래프 https://school.programmers.co.kr/learn/courses/30/lessons/258711 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr작성한 코드[설명]1. 추가된 edge는 나가는 path가 2개 이상이고, 들어오는 path(incoming)이 0개이다. -> 이를 이용해 추가된 edge 찾기2. 추가된 edge를 기준으로 각 그래프가 어떤 그래피인지 판별한다. (DFS 이용)public int[] solution(int[][] edges) { // Brute Force Map> map = new Hash.. 2024. 9. 27.
LeetCode 374. Guess Number Higher or Lower 문제 링크 https://leetcode.com/problems/guess-number-higher-or-lower/ 374. Guess Number Higher or Lower Guess Number Higher or Lower - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com Companies We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have .. 2022. 11. 16.
잘 까먹는 자료구조들 Balanced Tree 왼쪽과 오른쪽의 자식 수가 같거나 하나의 차이만 나는 것 Binary Search Tree 이진탐색을 할 때 사용되는 트리로 부모 노드의 오른쪽에는 부모노드보다 큰 수, 왼쪽에는 작은 수가 들어간다. Heap 최대힙, 최소힙이 있는데 모두 Root가 각각 최대이거나 최소이다. 즉, 가장 마지막으로 Numbering되는 자식이 최소이거나 최대이다. 삽입 연산 시에는 트리의 가장 마지막 자식 다음에 넣고 부모 노드와 하나씩 비교 / 스왑해가면서 자기 자리를 찾는다. 삭제 연산 시에는 루트값을 삭제하고 가장 마지막 자식을 루트에 넣은 후 하나씩 비교하면서 트리를 정립한다. 이때 힙과 BST의 차이는 힙은 맨 위가 max 혹은 min이라는 것 외에 정렬이 되어있지 않지만 BST의 경우는.. 2022. 6. 3.
Programmers / Hash - 베스트 앨범 https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 어떤식으로 정렬할지 감이 잘 안와서 걍 brute force로 풀었다. [내가 짠 코드] import java.util.*; class Solution { public int[] solution(String[] genres, int[] plays) { ArrayList answerList = new ArrayList(); HashMap genrePlay = n.. 2021. 8. 29.
Programmers / 정렬 - 가장 큰 수 programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 여기서 핵심은 정렬 식을 어떻게 구성할 것인지였다. 사실 Arrays.sort()에서 람다식을 이용해 풀 수도 있지만 문제가 '정렬' 카테고리에 들어가기 때문에 직접 merge sort를 짜보았다. [내가 짠 코드] // mergesort를 직접 구현해서 짰다 import java.util.*; class Sol.. 2021. 4. 18.
Programmers / 정렬 - K번째 수 programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 나는 그냥 단순하게 생각해서 짰다. [내가 짠 코드] import java.util.Arrays; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int i = 0; i < commands.length; i++){ int start = commands[i][0]-1; int end =.. 2021. 4. 17.
Programmers / Hash - 완주하지 못한 선수 programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr [참고한 코드] // 다른 사람의 풀이 import java.util.HashMap; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; HashMap hm = new HashMap(); for (String player .. 2021. 4. 6.
카카오 2020 블라인드 채용 1차 코딩테스트 4번 문제 - 가사 검색 문제 링크: programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 programmers.co.kr !! 내가 푼 코드는 효율성 테스트를 통과하지 못했다 !! // 카카오 테크 블로그에서 설명해준 바에 따르면 Trie 자료 구조를 사용하면 되는 듯 하다 // trie를 썼다. 효율성 테스트 12는 이제 통과 하는데 3,4,5가 통과되지 않는다 // 아무래도 arraylist 때문인 것 같다. import java.util.*; class Solution { public int[] solution(String[] words, String[] queries) { int[] answer = new int[queries.length]; Trie tr.. 2020. 9. 11.
카카오 2020 블라인드 채용 1차 코딩테스트 3번 문제 - 자물쇠와 열쇠 문제 링크: programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 이번 문제는 푸는데 좀 많은 시간이 걸렸다. 처음에는 열쇠의 위아래에 패딩을 붙였는데 잘 되지 않았다. 그래서 두 번째로 생각한 것은 자물쇠에 패딩을 붙이는 것이었다. class Solution { public boolean solution(int[][] key, int[][] lock) { int k_len = key.length; int l_len = lock.length; int k_count = 0, l_.. 2020. 9. 7.
카카오 2020 블라인드 채용 1차 코딩테스트 2번 문제 - 괄호 변환 문제 링크: programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴� programmers.co.kr import java.util.*; class Solution { public String solution(String p) { String answer = ""; String str; // 빈 문자열이거나 올바른 문자열일 경우 그대로 반환 if(p.length() == 0 || isCorrect(p)) return p; str = toBalanced(p); //.. 2020. 9. 5.
카카오 2020 블라인드 채용 1차 코딩테스트 1번 문제 - 문자열 압축 문제 링크: programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr // 통과 import java.util.*; class Solution { public int solution(String s) { int answer = s.length(); for(int i = 1; i 1){ compLength = compLength - (count-1)*i; compLength += unitNum(count); count = 1; .. 2020. 9. 4.