반응형

코딩테스트/프로그래머스 15

99클럽 코테 스터디 22일차 TIL, 그래프(가장 먼 노드)

1. 문제 정의2. 문제 접근결국 모든 노드를 그래프 형태로 만들어서 bfs 돌면서 노드들을 탐색하며 노드사이의 길이를 갱신해주면 된다.3. 문제 풀이그래프를 만든다.BFS를 돌면서 모든 노드를 탐색하며 길이를 갱신해준다.최대 깊이의 정답을 리턴한다.4. 코드import java.util.*;class Solution { static boolean[] visit; static List[] list; static int answer; public int solution(int n, int[][] edge) { answer = 0; visit = new boolean[n + 1]; list = new ArrayList[n + 1]; ..

99클럽 코테 스터디 20일차 TIL, 이분법(입국심사)

1. 문제 정의2. 문제 접근처음에는 queue를 사용하여 각각의 심사대를 queue로 정의해서 빼려고 했으나 그럼 공간복잡도가 너무 많이 나올 것 같아서 찾아보니 이분법으로도 해결이 가능해 보였다.3. 문제 풀이두 포인트를 지정한다.두 포인트의 중앙을 구하여 몇명이 통과 가능한지를  정한다.계속 범위를 좁혀나간다.4. 코드import java.util.*;class Solution { public long solution(int n, int[] times) { long answer = 0; Arrays.sort(times); long l = 0; long r = times[times.length-1] * (long) n; // 모든 사람이 ..

99클럽 코테 스터디 15일차 TIL, 탐욕법(구명보트)

1. 문제 정의2. 문제 접근탐욕법에 속해 있으니 greedy방식으로 풀면 될 것 같다.3. 문제 풀이배열을 정렬해준다. 2개의 포인트를 두어 차례대로 탐색한다. 정답을 갱신한다.4. 코드import java.util.*;class Solution { public int solution(int[] people, int limit) { int answer = 0; // 정렬해줘서 해야 최소 몸무게와 최대 몸무게의 사람을 선정해서 이용 가능 Arrays.sort(people); int l = people.length; // 투포인터 이용 int p1 = 0; int p2 = l -1; // 그때마..

99클럽 코테 스터디 6일차 TIL, 정렬(H-Index)

1. 문제 정의 2. 문제 접근정렬을 하면 될 것 같다.3. 문제 풀이int 배열을 오름차순으로 정렬해준다.배열을 순회하면서 최고 많이 인용된 논문부터 차례대로 순위가 안 넘는지 확인해 준다.정답을 리턴한다.4. 코드import java.util.*;class Solution { public int solution(int[] citations) { Arrays.sort(citations); int n = citations.length; int idx = 0; for(int i = n-1; i >=0; i--){ if(idx 5. 회고예전에 한번 풀었던 문제라서 기억이 났다. 내림차순으로 해서 처음부터 순회해서 문..

99클럽 코테 스터디 3일차 TIL, Heap(더 맵게)

1. 문제 정의2. 문제 접근스코빌을 더해줄때 마다 더해준 스코빌이 그 값의 정렬에 따라 자동으로 들어가야 하므로 PriorityQueue를 쓰는것이 편할 것 같다.3. 문제 풀이PriorityQueue 를 이용하여 첫번째 스코빌과 두번째 스코빌을 빼내어 계산하여 다시 pq에 넣어준다.넣어줄때 마다 최소 스코빌 값을 갱신해준다.마지막에 반복된 횟수를 리턴해준다.4. 코드import java.util.*;class Solution { public int solution(int[] scoville, int K) { PriorityQueue pq = new PriorityQueue(); int ans = 0; for (int s : scoville)..

99클럽 코테 스터디 2일차 TIL, Stack(올바른 괄호)

1. 문제 정의2. 문제 접근Stack을 사용하여 풀면 될 것 같다.3. 문제 풀이Stack을 이용하여 "("일때는 넣고, ")" 일때는 Stack에 값이 들어가 있는지 확인 후 처리4. 코드import java.util.*;class Solution { boolean solution(String s) { Stack stack = new Stack(); for(char ch:s.toCharArray()){ if(ch == '('){ stack.add(ch); } else { if(stack.isEmpty()){ return false; ..

99클럽 코테 스터디 1일차 TIL, Queue(기능개발)

1. 문제 정의 2. 문제 접근순차적으로 배포를 해야하고, 앞에 배포가 안되면 뒤에 배포도 기다려야 하니 Queue를 사용하면 될 것 같다.3. 문제 풀이Queue에 배포 시간을 순차적으로 적재배포될때마다 그 뒤에 배포가 이미 완료면 같이 처리정답 출력4. 코드import java.util.*;class Solution { public int[] solution(int[] progresses, int[] speeds) { int[] answer; List list = new ArrayList(); Queue q = new LinkedList(); for(int i = 0; i  5. 회고Queue를 활용하여 간단하게 해결할 수 있는 문..

PCCP 모의고사 1회 - 운영체제

1. 문제 정의 2. 문제 접근 PriorityQueue를 써서 대기열에 넣었다가, 하나씩 꺼내서 실행시키면서 각 점수마다 대기시간을 갱신시켜 주면 된다. 3. 문제 풀이 1. Program Class 를 정의한다. 1.1 Comparable 인터페이스를 구현해 정렬 기준을 준다. 1.1.1. 점수가 같다면 호출 순서가 작은 것부터(오름차순) 1.1.2. 만약 점수가 다르다면 점수가 더 낮은 것 부터(오름차순) 2. 본 로직 실행 전에 program 입력 값을 정렬해 준다. 2.1 점수가 더 낮은 순서대로(오름차순) 3. 실행 순서대로 queue에 담고, 하나씩 실행시킨다. 4. 정답을 return 한다. 4. 코드 import java.util.*; class Solution { // score: 점수..

PCCP 모의고사 2회 - 보물 지도

1. 문제 정의 2. 문제 접근 bfs로 접근해서 풀면 될 것 같다. 3. 문제 풀이 1. 지도를 matrix로 표기한다. 2. hole의 위치를 matrix 위에 표기한다. 3. bfs를 돌면서 칸마다 최소 이동 횟수를 표기한다. 4. 정답을 return한다. 4. 코드 import java.util.*; class Solution { static int[][] dist, matrix; static boolean[][] visit; static int[][] dir = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}}; static int N, M; static void bfs(int x, int y,int n, int m) { // (x, y)를 Q에 넣어주고, visit 표시와 dist..

PCCP 모의고사 2회 - 카페 확장

1. 문제 정의 2. 문제 접근 시간대 별로 사람이 몇명이 들어오는지를 계산해주면 될 것 같다. 시간 범위는 마지막 사람이 들어올 때를 마지막으로 더 이상 계산해 주지 않아도 된다. 그때가 들어오는 사람이 최대가 되는 시점이기 때문이다. 3. 문제 풀이 1. 마지막 사람이 들어오는 시점에 시간을 최대 시간으로 정의한다. 2. 최대 시간 만큼 사람수를 계산하는 배열을 정의한다. 3. 소요되는 시간을 정의한다. 4. for 문을 돌면서 order가 들어올 때 마다 people 배열을 갱신한다. 4. 정답을 return 해 준다. 4. 코드 // 누적합 원리 이용 import java.util.*; class Solution { public int solution(int[] menu, int[] order, ..

반응형