본문 바로가기
디스크 컨트롤러 - 프로그래머스 (Java, Level 3) https://school.programmers.co.kr/learn/courses/30/lessons/42627 풀이 package programmers; import java.util.Comparator; import java.util.PriorityQueue; public class 디스크컨트롤러 { public class Job { int startTime; int requiredTime; Job(int startTime, int requiredTime) { this.startTime = startTime; this.requiredTime = requiredTime; } } public int solution(int[][] jobs) { int currentTime = 0; int sum = 0;.. 2022. 8. 5.
프린터 - 프로그래머스 (Java, Level 2) https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=java 처음 풀이 import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.Queue; public class 프린터 { Integer[] dump = {0, -1}; public int solution(int[] priorities, int location) { //요청리스트 Queue reqList = new LinkedList(); //실제 인쇄리스트 List printList = new ArrayList();.. 2022. 8. 4.
트리 순회 - 백준 1991 (Java) https://www.acmicpc.net/problem/1991 입력한 값에 따라 트리에 노드를 추가하는 메소드 (insertNode()) 해당 트리를 순회(전위, 중위, 후위)하는 메소드 필요 (~Order()) C E F를 입력하면 C노드(데이터 C를 가진 노드)의 좌측 자식노드에는 E노드, 우측 자식노드에는 F노드를 추가해야 한다. 그러기 위해선 특정 데이터 값을 가지는 노드를 찾는 메소드가 필요 (searchNode()) 여기서는 searchNode()를 호출하면, 찾는 노드가 있으면 pointer 변수가 해당 노드의 주소를 참조하고, 없으면 null값이다. 개념 searchNode()와 ~Order()에서 사용한 재귀호출 (중단조건, stack구조로 메소드 호출) 순회(전위, 중위, 후위) 순.. 2022. 8. 3.
길 찾기 게임 - 2019 Kakao Blind Recruitment (Java, Level 3) https://school.programmers.co.kr/learn/courses/30/lessons/42892 풀이 노드들을 그래프에 나타내보면 BST의 전체 모습을 알 수 있다. 해당 모습의 BST가 되기 위해서는 루트 노드부터 리프 노드까지 차례대로 해당 노드를 트리에 add해야 한다.(BST의 문제점으로 자료 삽입 순서에 따라 트리의 구조가 바뀌는 점이 있다.) 따라서 nodeInfo에 담긴 노드 정보를 순서에 맞게 정렬해야 한다. 정렬 기준은 첫 번째는 y값이 큰 순서대로, 두 번째는 같은 y값이라면 x값이 작은 순서대로! Node 클래스 static class Node { int num; int x; int y; Node parent; Node leftChild; Node rightChild.. 2022. 7. 30.
키 순서 - 백준 2458 (Java) https://www.acmicpc.net/problem/2458 풀이 문제에 주어진 대로 관계가 주어진 학생을 2차원 그래프로 나타낸다. 순위가 정해진다는 의미는 자신보다 크거나 작은 것이 결정된 학생 수가 (전체 학생 수 - 1)이 된다는 뜻이다. 자신을 기준으로 키가 크거나 작은 학생을 bfs로 탐색하여(greaterBfs(), lessBfs()) 각각 몇 명인지 알아내고 합을 구하면 된다. main() //학생들 간의 관계 저장할 2차원 배열 static int[][] graph; static int N; static boolean[] isVisited; public static void main(String[] args) throws IOException { BufferedReader bf = .. 2022. 7. 26.
[2022 OSSCA] 첫 PR과 Merge 2022 오픈소스 컨트리뷰션 아카데미가 첫 한 달 일정인 Challenges 기간이 끝났다. 아직 팀별 중간 보고와 발표가 남긴 했지만 각자 멘티들이 약 한 달간 활동한 내역을 정리해서 중간 보고서를 제출했다. 일단 한 달간 활동을 간단하게 정리해보면 다음과 같다. 참여 활동 07.09 - 오프라인 발대식 참여 07.13 - 멘토님 온라인 세션 참여 07.16 - 오픈소스 Git 기본, 고급 교육 참여 07.25 - 온라인 Q&A 세션 참여 오픈소스 활동 1. 업데이트가 오래된 Interpreter 삭제 https://github.com/apache/zeppelin/pull/4430 Zeppelin에서는 여러 Interpreter를 사용한다. 그 중 업데이트가 오래 되거나 더 이상 사용하지 않는 Inte.. 2022. 7. 26.
멀쩡한 사각형 - Summer/Winter Coding 2019 (Java, Level 2) https://school.programmers.co.kr/learn/courses/30/lessons/62048 처음 풀이 public long solution(int w, int h) { //가로로 한칸씩 움직이면서 대각선이 지나는 위치(y좌표)를 보고 //지나가는 사각형의 개수를 계속 더해준다. //각 구간의 처음 지나가는 사각형의 위치 //현재 대각선의 y좌표가 2.5라면 2 이후의 사각형부터 지나간다. int prevFlr = 0; int sumOfUnUsedSqr = 0; double division = h/(double)w; for(int i=1; i 2022. 7. 25.
[회고] 세 달이 지난 백엔드 부트캠프, 과연 나는 잘 하고 있는 걸까? 22년 4월 25일에 시작한 백엔드 부트캠프. 6개월 과정 중 절반이 지났다. 일단은 세 달간 고생한 나에게, 그리고 앞으로 남은 기간 취업까지 고생할 나에게 박수! 지난 세 달을 돌아보며 먼저 잘했다고 생각해 남은 기간 동안에도 유지할 점을 적어보고자 한다. 1. 꾸준한 운동 전부터도 하고 있었지만, 부트캠프를 시작하면서 책상에 앉아있는 시간이 더 많아지다보니 운동의 필요성을 더 느끼고 있다. 일단 체력은 물론이고, 생활 전반적으로 에너지가 생긴다. 또 공부하다보면 머릿속이 복잡할 때가 많은데 그럴 때 아무 생각없이 운동을 하고나면 머릿속이 한결 가벼워지는 것을 느낄 수가 있다. 혹시 부트캠프를 진행 중이거나, 참여할 생각이 있는 사람이 있다면 운동은 정말 강력추천한다. 운동하는 시간에 공부하는 것이 .. 2022. 7. 25.
카드 구매하기 2 - 백준 16194 (Java) https://www.acmicpc.net/problem/16194 풀이 DP 문제로, 규칙을 찾아보면 다음과 같다. i개 든 카드팩 vs (i-1)개 카드 최소 금액 + 1개 카드 최소 금액 vs (i-2)개 카드 최소 금액 + 2개 카드 최소 금액 ... vs (i+1)/2개 카드 최소 금액 + 나머지 카드 개수 최소 금액 이 중 최솟값이 dp[i] public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); StringTokenizer st = new.. 2022. 7. 24.
단어 맞추기 - 백준 9081 (Java) https://www.acmicpc.net/problem/9081 풀이 1. 뒤에서부터 바로 앞 요소와 비교한다. 1-1. 바로 앞 요소가 더 크거나 같으면 다음 요소로 넘어간다. 1-2. 바로 앞 요소가 더 작으면 아래 과정을 진행한다. 2. 바로 앞 요소를, 여태까지 지나왔던 요소들 중 바로 앞 요소보다 큰 수 중 최솟값으로 바꾼다. 3. 그 뒤는 오름차순으로 정렬 public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); int totalCnt = Integer.parseInt(bf.readLine()); StringBu.. 2022. 7. 23.