자바
[프로그래머스] 다리를 지나는 트럭
[풀이방법] 1. 대기중인 트럭이 순서대로 들어있는 큐 wait 생성 = 대기중인 트럭 2. 다리의 길이만큼 0이 들어있는 큐 bridge 생성 = 다리위 트럭 3. 다리위의 트럭이 모두 나갈 때까지 다음을 반복 3-1) 시간++ 3-2) 다리위의 트럭을 하나 빠져나가게함 (만약 트럭이 없다면 0이 빠져나감) -> 현재 다리위 트럭무게 = 다리위의 트럭무게 - 빠져나간 트럭 무게 3-3) 대기중인 트럭이 존재할 경우 트럭을 더 올릴 수 있으면 다음 트럭을, 아니면 0을 추가 -> 현재 다리위 트럭무게 = 다리위의 트럭무게 + 올린 트럭 무게 [풀이코드_Java] import java.util.LinkedList; import java.util.Queue; class Solution { public int..
[백준] 1065번 한수
https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net [풀이 방법] 📝 1~99까지의 숫자는 모두 한수이다 📝 따라서 N >= 100 일 경우에만 1씩 증가시켜 한수인지 판별 📝 한수인지 판별하는 logic 1) 각 자리의 숫자를 배열에 저장 2) 각 자리의 숫자의 차이가 달라지는 경우 false 반환 [풀이 코드_Java] import java.util.Scanner; public class Main { public static void main(St..
[백준] 11724번 연결 요소의 개수
https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net [풀이 방법] 하나의 선으로 이어진 덩어리(?)가 몇 개 있는지 구하는 문제이다. 이 문제에서 방문 순서는 영향을 미치지 않기 때문에 dfs, bfs 상관없이 탐색을 하면된다! 1. 1~N개의 정점 중 아직 방문하지 않은 정점을 시작 정점으로 탐색 시작 2. 한 번의 탐색이 끝나면 연결 요소의 개수 증가 -> 한 번의 탐색이 끝났다는것..
[백준] 2606번: 바이러스
https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net [풀이 방법] 1. 키(정수) : 값(배열)을 갖는 HashMap 자료구조를 사용하여 컴퓨터의 연결을 저장 (그래프) 2. 방문한 노드는 더 이상 방문하지 않아도 되므로 방문기록을 표시 할 boolean 배열 visited를 선언 3. 연결되어 있는 컴퓨터부터 순차적으로 반복(bfs) 하기 위해 다음에 방문 할 노드를 담아 둘 Queue 자료구조 q 사용 여기서 부터 bfs 시작 ⤵ 4. 첫 시작점 1..
[프로그래머스] 오픈채팅방
풀이 방법 1. HashMap을 사용하여 아이디별 최종닉네임을 저장할 변수 nickname 선언 (HashMap은 key, value로 이루어진 자료구조) 2. record의 모든 값들을 반복하며 들어오는 경우와 닉네임을 변경하는 경우, 각 아이디별 닉네임을 갱신 3. 메세지를 작성할 ArrayList 선언 이때, 배열이 아닌 ArrayList를 사용한 이유는 나갈경우에는 메세지를 작성하지 않아 record 의 길이와 메세지가 들어갈 배열의 길이가 같지 않기 때문임 사실 변수를 사용하면 해결 될 문제지만 코드가 길어지고 가독성이 좋지 않을것으로 판단되어 ArrayList사용 4. record의 모든 값들을 반복하며 들어오는 경우와 나가는 경우, 닉네임 변수에서 키로 값을 가져와 닉네임 + 메세지를 작성 ..
![[프로그래머스] 구명보트](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbprUC0%2FbtrDYesAF7G%2Fe5o4EBWCdWOl9kTk9IiHj1%2Fimg.png)
[프로그래머스] 구명보트
풀이방법 보트의 개수를 최소로 만들기 위해서는 가능하다면 1개의 보트에 2명씩 태워야한다! 즉, 몸무게가 많이 나가는 사람을 태울 경우에 몸무게가 적은 사람들 중 같이 태울 수 있는 사람을 찾으면 유리할 것 같다고 생각하여 몸무게가 담긴 배열을 정렬하고 투 포인터를 사용했다 :) 1. 몸무게가 담긴 배열 오름차순 정렬 2. 아직 보트에 타지 않은 사람들 중 몸무게가 가장 적은 사람을 가리키는 포인터 left, 몸무게가 가장 많은 사람을 가리키는 포인터 right 선언 3. left가 가르키는 몸무게와 right가 가르키는 몸무게의 합이 limt 이하라면 그 두명을 태우고 left는 다음으로 몸무게가 적게 나가는 사람, right는 다음으로 몸무게가 많이 나가는 사람을 가르키도록 움직인다. 4. left..
![[리트코드] 4. Median of Two Sorted Arrays](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdoz9X0%2FbtrDOUO5poe%2F3VGc4djidH20VmM2Tfenmk%2Fimg.png)
[리트코드] 4. Median of Two Sorted Arrays
풀이방법_1 1. nums1길이 + nums2길이 만큼의 크기를 가지는 배열 nums 생성 2. System.arraycopy() 을 사용하여 두 개의 배열을 nums에 복사해서 넣음 3. Arrays.sort() 사용하여 nums 오름차순 정렬 4. nums의 길이가 홀 수 일때 -> 배열의 중앙값 return / 짝 수 일때 -> 배열의 중앙값 2개의 평균을 return 코드_1 import java.util.Arrays; class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int[] nums = new int[nums1.length + nums2.length]; System.arraycopy(nums1, ..