코딩테스트
-
[자바] 최소 공배수(LCM) 구하는 방법코딩테스트 2025. 1. 31. 10:45
a*b static int lcm(int a, int b) { return (a * b) / gcd(a, b);}static int gcd(int a, int b) { if (b == 0) { return a; } return gcd(b, a % b);} 만약 a*b > 2,147,483,647 이라면 나눗셈을 먼저하고 곱셈을 하면 된다.static int lcm(int a, int b) { return (a / gcd(a, b)) * b;}static int gcd(int a, int b) { if (b == 0) { return a; } return gcd(b, a % b);}
-
[자바] 백준 22856: 트리 순회코딩테스트 2025. 1. 27. 15:24
1. 문제https://www.acmicpc.net/problem/22856 2. 문제 접근법2-1. 중위 순회란?중위 순회는 왼쪽 노드 -> 부모 노드 -> 오른쪽 노드 순서대로 방문한다.따라서 그림 1의 그래프가 존재할 때, 중위 순회 결과는 D -> B -> F -> E -> G -> A -> C이다. 그림 2의 중위 순회 결과 : 4 -> 2 -> 5 -> 1 -> 6 -> 7 -> 32-2. 중위 순회에서 마지막으로 방문할 노드 찾기그림 1의 마지막 노드 : C그림 2의 마지막 노드 : 3 중위 순회 시에 마지막으로 방문할 노드를 구하는 자바 코드이다. v : 현재 노드(부모 노드)nodes.get(v).get(0) : 왼쪽 자식 노드nodes.get(v).get(1) : 오른쪽 자식 노드아래..
-
[자바] 백준 15787: 기차가 어둠을 헤치고 은하수를, 2가지 풀이(비트마스킹, 문자열)코딩테스트 2025. 1. 15. 18:31
https://www.acmicpc.net/problem/15787 본 글에서는 비트 마스킹과 문자열로 푸는 방법을 설명한다. 난 처음에 문자열을 사용하여 어렵지 않게 코드를 작성하였는데, 구글링을 해보니 비트 마스킹을 사용하여 대부분이 해결하고 있었다. 비트 마스킹을 처음 접한다면 이해가 어려울 수 있겠지만, 어렵다고 포기하지 말고 다른 글도 참고하면서 이해해 보도록 하자. (나도 비트 마스킹은 처음 알았고, 손으로 그려가며 이해했다.) 방법 1: StringBuilder를 사용한다.나는 문자열을 사용하여 코드를 작성했는데, String이 아닌 StringBuilder를 사용했다. 자바에서는 String 클래스의 경우 불변 객체이고, StringBuilder는 가변 객체이다. 따라서 String 객..
-
[자바] 백준 12764: 싸지방에 간 준하, TreeSet + 우선순위큐 풀이코딩테스트 2025. 1. 13. 13:43
주의해야 할 부분사용 가능한 컴퓨터가 여러 대가 있다면 가장 앞에 위치한 컴퓨터를 사용해야 한다. 예를 들어, [2, 4, 5] 번 컴퓨터가 사용 가능하다면 2번 컴퓨터를 사용해야 한다. 문제 풀이군대를 갔다온 남자라면 싸지방이 무엇인지 알 것이다. 물론 모른다고 해서 못 푸는 문제는 아니다. 싸지방의 크기는 작기 때문에 사용 가능한 컴퓨터는 제한적이다. 일반적으로는 사용 가능한 컴퓨터가 여러 대 있다면 아무 곳이나 앉아서 사용하겠지만, 본 문제에서는 가장 앞에 위치한 컴퓨터를 사용해야 한다고 한다. 따라서 싸지방에 들어왔을 때, (1)사용 중이지 않은 컴퓨터를 확인하고, (2)그 중에서 가장 앞에 위치한 컴퓨터를 사용하면 된다. times : N개의 (컴퓨터 사용 시간, 종료 시간)을 저장하되, 사용 ..