[StudyWithMe] 프로젝트 전체 코드의 품질 향상을 위한 ListCheckUtils 적용
·
프로젝트/StudyWithMe
이번 포스팅에서는 깊은 내용을 다루는 것이 아니라,,,`StudyWithMe`의 코드 작성 간 리스트 안의 값 존재여부 확인 시 너무 많은 중복 코드가 생겨가독성 개선 및 중복 코드 제거를 위해 `ListCheckUtils`를 적용한 내용을 설명하려 한다.ListCheckUtils 도입 전 본래의 `StudyWithMe`에서는 `List` 객체의 `null or empty` 확인을 위해스터디 룸의 `생성`, `수정` 작업에서 아래 코드의 `if문` 형식이 굉장히 많이 반복되었다.  `ListCheckUtils` 도입 전 StudyRoomCommandService@Service@RequiredArgsConstructorpublic class StudyRoomCommandService { ... ..
[Java] Java를 복습해보자
·
Language/Java
Java의 컴파일 과정자바 프로그래머가 `.java`의 확장자를 갖는 소스 파일을 생성한 뒤 `javac` 컴파일러를 이용해 `.class`의 확장자를 갖는 바이트 코드를 만들어내는 것을 컴파일 과정이라고 한다. Java 프로그램은 바로 실행이 가능할까?Java 프로그램은 완전한 기계어가 아닌 중간 단계의 바이트 코드를 사용한다.그렇기에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다.해당 가상 운영체제는 JVM으로, JVM 덕분에 우리는 다른 운영체제에서도 JVM만 설치되어있으면,동일한 결과를 내는 Java 프로그램을 수행할 수 있게 된다.즉, 운영체제마다 Java 프로그램을 개발하는 것보다 운영체제와 자바 프로그램을 중계하는 JVM을 두어,어떤 운영체제에서도 동일한 실행 결과가 나오도록 설..
[프로그래머스] 캠핑 - Java
·
PS/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/1833 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 정답률이 낮아 살짝 걱정됐는데, 생각보다 많이 어렵진 않았던 것 같다. N이 최대 5000인 문제로, x, y 좌표를 정렬을 해준 뒤 data를 i와 j로 하나씩 선택해가며 i, j 사이에 있는 쐐기가 있는지 확인하며 개수를 카운트한다.  import java.util.*;class Solution { public int solution(int n, int[][] data) { Arrays.sort(data, (o1, o2) -..
[백준] 우주 탐사선 - Java 17182
·
PS/백준
https://www.acmicpc.net/problem/17182  플로이드-워샬 알고리즘과 백트래킹을 사용해서 풀었다. 우선, 모든 노드의 최단 거리를 `플로이드-워샬` 알고리즘을 사용해 구해준다. 그 후, 백트래킹으로 모든 경우의 수를 탐색하여 나올 수 있는 최대값을 계산한다. public class BOJ17182 { static int[][] grid; static int N; static int K; static boolean[] visited; static int result = Integer.MAX_VALUE; public static void main(String[] args) throws IOException { BufferedReader b..
[백준] 센티와 마법의 뿅망치 - Java 19683
·
PS/백준
https://www.acmicpc.net/problem/19638 우선순위 큐를 사용해서 풀었다.  최소값이 1이거나 키보다 작은 값일 경우 반복문을 탈출 후 결과 출력한다  import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.PriorityQueue;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamR..
[백준] 풍선 터트리기 - Java 32377
·
PS/백준
https://www.acmicpc.net/problem/32377   우선, 입력값인 x, y, z의 값이 굉장히 크기 때문에 `이분 탐색`으로 접근해야 된다는 생각이 들었다.(그리고 시간 제한이 0.5초이다) 그래서 내가 생각한 키 포인트는 x, y, z에 따른 N번째 풍선을 터트리는 순간을 이분 탐색으로 찾아야 된다고 생각했다. 그리고 동시에 두 명 이상이 풍선을 터트리는 경우 A, B, C 순서대로 터트리기 때문에N번째 풍선을 터트리는 순간의 `-1`초를 해주고 반복문을 돌며 나누어 떨어지는 값을 출력했다. import java.io.*;import java.util.StringTokenizer;public class BOJ32377 { public static void main(String..