분류 전체보기 795

백준 14179번 빗물 (JAVA)

https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 저는 각각의 높이마다 몇개의 빈 블록이 두 블록 사이에 있는지를 판단하였습니다. 첫 빈칸이 아닌 것을 찾고 그 다음 빈칸이 아닌것을 찾아서 그 사이의 값을 더해주면서 문제를 해결하였습니다. package BOJ.Simulation; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.S..

알고리즘 2022.01.04

백준 2504번 괄호의 값 (JAVA)

https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net Java같은 경우 Stack은 Vector로 구현되어 있어 비효율적인 것으로 알고 있어 ArrayDeque을 통해 Stack을 사용하였습니다. 저는 해당 문제를 분배법칙을 활용하여 문제를 해결하였습니다. package BOJ.dataStructure; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util..

알고리즘 2022.01.03

백준 1259번 팰린드룸수 (JAVA)

https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 저는 String의 길이를 반으로 나누고 대칭적으로 문자열이 같은지를 확인하였습니다. 이를 통해 가운데 문자는 확인하지 않도록 구현하였습니다. package BOJ.String; import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_1259 { public static void main(String[] args) thro..

알고리즘 2022.01.02

백준 1927번 최소 힙 (JAVA)

https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 저는 우선 순위 큐를 통해 해당 문제를 해결하였습니다. 처음에 우선순위 큐가 비어있는지를 확인하지 않아 틀렸었습니다. package BOJ; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.PriorityQueue; import java.util.StringTokenizer; im..

알고리즘 2022.01.01

백준 15990번 1,2,3더하기 5 (JAVA)

https://www.acmicpc.net/problem/15990 15990번: 1, 2, 3 더하기 5 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 해당 문제는 저는 재귀적인 DP를 활용하여 문제를 해결하였습니다. 저는 인자로 구하고자하는 값과 시작하는 숫자를 주었습니다. dp[구하고자하는 값][시작하는 숫자] = 시작하는 숫자로 시작하는 구하고자하는 값의 개수 입니다. 이를 통해 구하고자하는 값의 경우의 수 = dp[구하고자하는 값][1] + dp[구하고자하는 값][2] + dp[구하고자하는 값][3]로 최종 값을 구하였습니다. package BOJ.DP; import java.io.Buff..

알고리즘 2021.12.31

백준 10423번 전기가 부족해 (JAVA)

https://www.acmicpc.net/problem/10423 10423번: 전기가 부족해 첫째 줄에는 도시의 개수 N(1 ≤ N ≤ 1,000)과 설치 가능한 케이블의 수 M(1 ≤ M ≤ 100,000)개, 발전소의 개수 K(1 ≤ K ≤ N)개가 주어진다. 둘째 줄에는 발전소가 설치된 도시의 번호가 주어진다. 셋째 www.acmicpc.net 저는 쿠르스칼 방법으로 해당 문제를 해결하였습니다. 전원 공급하는 노드들은 parent를 0으로 설정하여 모두 연결하였습니다. 전원을 공급하는 것들은 연결된 것으로 봐도 무방하기 때문에 이렇게 작성하였습니다. package BOJ.MST; import java.io.BufferedReader; import java.io.InputStreamReader; ..

알고리즘 2021.12.30

프로그래머스 합승 택시 요금 (JAVA)

https://programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 저는 해당 문제를 플루이드-워샬을 통해서 해결하였습니다. 플루이드-워샬을 통해 각각..

알고리즘 2021.12.29

프로그래머스 이중우선순위큐 (JAVA)

https://programmers.co.kr/learn/courses/30/lessons/42628# 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 저는 maxHeap과 minHeap 두개를 사용하여 문제를 해결하였습니다. count를 통해 실제 값이 몇개가 있는지 확인하였고, count가 0이 되면 maxHeap과 minHeap을 초기화하여 문제를 해결하였습니다. import java.util.*; import java.util.function.*; class Solution { public int[] solution(String[] operations) { int[] answer = {}; int count = 0; Function stoi = Integer::parseInt; ..

알고리즘 2021.12.28

프로그래머스 메뉴 리뉴얼 (JAVA)

https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 저는 map을 통해 조합할 수 있는 알파벳이 몇번 나왔는지를 확인하였습니다. 이를 iterator를 통해 가장 많이 나온 횟수를 구하고 그 값과 같은 횟수만큼 나온 메뉴를 결과에 넣어서 해결하였습니다. import java.util.*; class Solution { static Map[] set; static void pick(StringBuilder sb,ch..

알고리즘 2021.12.27

프로그래머스 신규 아이디 추천(JAVA)

https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 저는 StringBuilder를 사용하여 문제를 해결하였습니다. 자바의 경우 String이 불변의 속성을 가지고 있기 때문에 문자열의 수정이 많은 경우, 계속 새로운 메모리를 소모하게 됩니다. 그래서 가변성이 있는 StringBuilder를 사용하였습니다. StringBuilder는 StringBuffer에서 동기화 기능이 빠져있기 때문에 단일 쓰레드 환..

알고리즘 2021.12.26