전체 글
[BOJ/JAVA] 9019번: DSLR
키워드D: D 는 n을 두 배로 바꾼다. 결과 값이 9999 보다 큰 경우에는 10000 으로 나눈 나머지를 취한다. 그 결과 값(2n mod 10000)을 레지스터에 저장한다.S: S 는 n에서 1 을 뺀 결과 n-1을 레지스터에 저장한다. n이 0 이라면 9999 가 대신 레지스터에 저장된다.L: L 은 n의 각 자릿수를 왼편으로 회전시켜 그 결과를 레지스터에 저장한다. 이 연산이 끝나면 레지스터에 저장된 네 자릿수는 왼편부터 d2, d3, d4, d1이 된다.R: R 은 n의 각 자릿수를 오른편으로 회전시켜 그 결과를 레지스터에 저장한다. 이 연산이 끝나면 레지스터에 저장된 네 자릿수는 왼편부터 d4, d1, d2, d3이 된다.구현각 4가지 동작 방식을 구현한다.이후 너비우선 탐색을 이용하여 한 ..
[BOJ/JAVA] 17129번: 윌리암슨수액빨이딱따구리가 정보섬에 올라온 이유
17129번: 윌리암슨수액빨이딱따구리가 정보섬에 올라온 이유윌리암슨수액빨이딱따구리 세 식구가 정보섬에 올라왔다! 세 윌리암슨수액빨이딱따구리는 정보섬 2층 어딘가에 모여 앉아 쉬고 있었는데, 저 멀리 청국장과 스시와 맥앤치즈가 있는 것을 발견했다! 아빠는 청국장, 엄마는 스시, 아이는 맥앤치즈가 먹고 싶다. 그래서 이 셋은 현위치로부터 가장 가까운 음식을 먹으러 가기로 했다. 정보섬 2층은 A n×m의 격자로 표현된다.https://www.acmicpc.net/problem/17129키워드정보섬 2층은 A[n][m]의 격자로 표현어떤 A[i][j]가 0이면 빈 복도여서 지나갈 수 있고, 1이면 장애물로 막혀 지나갈 수 없다.윌리암슨수액빨이딱따구리 식구는 2, 청국장은 3, 스시는 4, 맥앤치즈는 5이다.현..
[BOJ/JAVA] 13023번: ABCDE
13023번: ABCDEhttps://www.acmicpc.net/problem/13023키워드오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다.A는 B와 친구다.B는 C와 친구다.C는 D와 친구다.D는 E와 친구다.위와 같은 친구 관계가 존재하는지 안하는지 구하는 프로그램을 작성구현한 노드에서 다른 노드로의 최대 거리를 구하는 문제이다.깊이 우선 탐색을 이용하여 구현한다.최대 거리가 4 이상이면 위와 같은 친구관계가 존재하는 것이고 그렇지 않으면 존재하지 않는다.코드import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.uti..
[BOJ/JAVA] 4803번: 트리
4803번: 트리입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 n ≤ 500과 m ≤ n(n-1)/2을 만족하는 정점의 개수 n과 간선의 개수 m이 주어진다. 다음 m개의 줄에는 간선을 나타내는 두 개의 정수가 주어진다. 같은 간선은 여러 번 주어지지 않는다. 정점은 1번부터 n번까지 번호가 매겨져 있다.https://www.acmicpc.net/problem/4803키워드트리는 사이클이 없는 연결 요소트리는 정점이 n개, 간선이 n-1개임의의 두 정점에 대해서 경로가 유일그래프가 주어졌을 때, 트리의 개수를 세는 프로그램구현DisjontSet을 이용하여 트리인지를 판단하였다.cycle[]해당 노드가 사이클에 속하는지 판단하는 배열★merge★ :: 핵심 메소드두 노드..
[BOJ/JAVA] 1991번: 트리 순회
1991번: 트리 순회문제 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 예를 들어 위와 같은 이진 트리가 입력되면, 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식) 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식) 후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트) 가 된다.https://www.acmicpc.net/problem/1991키워드이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal),..
[BOJ/JAVA] 12764번: 싸지방에 간 준하
12764번: 싸지방에 간 준하현재 대한민국 해군에 소속되어있는 준하는 문제를 풀기 위해 매일같이 사이버 지식 정보방 통칭 싸지방에 다닌다. 그러나 최근 문제가 생겼다. 싸지방에 사람이 몰려 컴퓨터 수가 모자라게 된 것이다. 이런 사태를 도저히 용납할 수 없었던 준하는 곧 전역하는 선임을 설득해 민원을 넣도록 하는 데 성공했다.https://www.acmicpc.net/problem/12764키워드모든 사람은 싸지방에 들어왔을 때 비어있는 자리 중에서 번호가 가장 작은 자리에 앉는 것이 규칙모든 사람이 기다리지 않고 싸지방을 이용할 수 있는 컴퓨터의 최소 개수자리별로 몇 명의 사람이 사용했는가구현중요한 것은 우선순위 큐를 이용하여 가장 시간이 짧은 자리를 찾아가면 안된다는 것이다.예외가 발생하는 경우현재..
[BOJ/JAVA] 1374번: 강의실
1374번: 강의실첫째 줄에 강의의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 줄마다 세 개의 정수가 주어지는데, 순서대로 강의 번호, 강의 시작 시간, 강의 종료 시간을 의미한다. 강의 번호는 1부터 N까지 붙어 있으며, 입력에서 꼭 순서대로 주어지지 않을 수 있으나 한 번씩만 주어진다.https://www.acmicpc.net/problem/1374키워드최대한 적은 수의 강의실을 사용하여 모든 강의가 이루어지게 하고 싶다.구현우선 순위 큐를 이용하여 구현한다.static class Lecturenumber강의 번호startTime강의 시작 시각endTime강의 종료 시각lectureClassQueue강의가 끝나는 시각의 오름차순 정렬 강의 데이터를 강의 시작..
[BOJ/JAVA] 7662번: 이중 우선순위 큐
7662번: 이중 우선순위 큐이중 우선순위 큐(dual priority queue)는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭제할 때 연산(operation) 명령에 따라 우선순위가 가장 높은 데이터 또는 가장 낮은 데이터 중 하나를 삭제하는 점이다. 이중 우선순위 큐를 위해선 두 가지 연산이 사용되는데, 하나는 데이터를 삽입하는 연산이고 다른 하나는 데이터를 삭제하는 연산이다.https://www.acmicpc.net/problem/7662키워드데이터를 삽입하는 연산데이터를 삭제하는 연산은 또 두 가지로 구분우선순위가 가장 높은 것을 삭제우선순위가 가장 낮은 것을 삭제Q에 적용될 일련의 연산이 주어질 때 이를 처리한 후 최종적으로 Q..
[BOJ/JAVA] 1781번: 컵라면
1781번: 컵라면상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라인을 정하였다. 위와 같은 상황에서 동호가 2, 6, 3, 1, 7, 5, 4 순으로 숙제를 한다면 2, 6, 3, 7번 문제를 시간 내에 풀어 총 15개의 컵라면을 받을 수 있다.https://www.acmicpc.net/problem/1781키워드문제를 푸는데는 단위 시간 1각 문제의 데드라인은 N이하의 자연수이다.각 문제를 풀 때 받을 수 있는 컵라면 수와 최대로 받을 수 있는 컵라면 수는 모두 231 보다 작거나 같은 자연수 구현잘못된 접근 방법데드라인의 오름차, 컵라면 수의 내림차순으로 정렬한..