분류 전체보기 795

백준 14235번 크리스마스 선물 (JAVA)

https://www.acmicpc.net/problem/14235 14235번: 크리스마스 선물 크리스마스에는 산타가 착한 아이들에게 선물을 나눠준다. 올해도 산타는 선물을 나눠주기 위해 많은 노력을 하고 있는데, 전세계를 돌아댕기며 착한 아이들에게 선물을 나눠줄 것이다. 하지만 www.acmicpc.net 저는 우선순위 큐를 통해 문제를 해결하였습니다. 우선순위 큐를 통해 a가 0일때는 우선순위 큐에 선물을 넣고, 0이라면 우선순위 큐에서 값을 꺼내왔습니다. package BOJ.greedy; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Collections; import java.util.HashM..

알고리즘 2022.07.22

백준 23741번 야바위 게임 (JAVA)

https://www.acmicpc.net/problem/23741 23741번: 야바위 게임 첫 번째 줄에 정점 수 $N$, 간선 수 $M$, 게임 시작 시 공이 놓여있는 정점 번호 $X$, 공이 든 컵이 움직인 횟수 $Y$가 주어진다. ($1 \leq N, Y \leq 10^3$, $1 \leq M \leq 10^4$, $1 \leq X \leq N$) 다음 줄부터 $M$ www.acmicpc.net 저는 BFS를 통해 해당 문제를 해결하였습니다. 저는 BFS를 시간 단위로 진행하였고, 시간이 y와 같아졌을 때 해당 노드들을 List에 넣고 반환하였습니다. package BOJ.bfs; import java.io.BufferedReader; import java.io.InputStreamReader;..

알고리즘 2022.07.21

백준 19638번 센티와 마법의 뿅망치 (JAVA)

https://www.acmicpc.net/problem/19638 19638번: 센티와 마법의 뿅망치 마법의 뿅망치를 센티의 전략대로 이용하여 거인의 나라의 모든 거인이 센티보다 키가 작도록 할 수 있는 경우, 첫 번째 줄에 YES를 출력하고, 두 번째 줄에 마법의 뿅망치를 최소로 사용한 횟수 www.acmicpc.net 저는 해당 문제를 우선순위 큐를 이용해 문제를 해결하였습니다. 우선순위 큐를 이용해 가장 키가 큰 칭구를 가져오고 이를 반으로 줄였습니다. 1이하로는 안 떨어지기 때문에 1과 비교하여 1보다 작다면 1을 넣도록 구현하였습니다. package BOJ.greedy; import java.io.BufferedReader; import java.io.InputStreamReader; impo..

알고리즘 2022.07.20

백준 2613번 숫자구슬

https://www.acmicpc.net/problem/2613 2613번: 숫자구슬 첫째 줄에 구슬의 개수 N과 그룹의 수 M이 주어진다. 둘째 줄에는 각 구슬이 적혀진 숫자가 왼쪽부터 차례로 주어진다. N은 300 이하의 자연수, M은 N이하의 자연수이며, 구슬에 적혀진 숫자는 100 www.acmicpc.net 저는 이분탐색을 통해 문제를 해결하였습니다. 일반적인 이분탐색과 다르게 무조건 m개의 그룹으로 나눠야 하며 이때 각각의 그룹의 개수는 1개 이상이여야합니다. 저는 계속 45%에서 틀렸습니다. 가 나왔었는데 저와 같이 틀리신다면 밑의 예제를 넣어주세요 입력 4 4 1 1 2 1 결과 2 1 1 1 1 이를 위해 저는 개수가 m개 이하가 되면 1 이상의 값을 계속 쪼개주었습니다. package..

알고리즘 2022.07.19

백준 2109번 순회강연 (JAVA)

https://www.acmicpc.net/problem/2109 2109번: 순회강연 한 저명한 학자에게 n(0 ≤ n ≤ 10,000)개의 대학에서 강연 요청을 해 왔다. 각 대학에서는 d(1 ≤ d ≤ 10,000)일 안에 와서 강연을 해 주면 p(1 ≤ p ≤ 10,000)만큼의 강연료를 지불하겠다고 알려왔다. www.acmicpc.net 저는 우선순위 큐를 통해 해당 문제를 해결하였습니다. 시간은 역순으로 최대 일 수 부터 시작하여 가장 높은 가격이 먼저 나오는 우선순위 큐를 만들었습니다. package BOJ.greedy; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import..

알고리즘 2022.07.18

백준 14496번 그대, 그머가 되어 (JAVA)

https://www.acmicpc.net/problem/14496 14496번: 그대, 그머가 되어 첫째 줄에 머호가 바꾸려 하는 문자 a와 b가 주어진다. 둘째 줄에 전체 문자의 수 N과 치환 가능한 문자쌍의 수 M이 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ M ≤ 10,000) 이후 M개의 줄에 걸쳐 치환 가능한 문 www.acmicpc.net 저는 해당 문제를 BFS를 통해서 문제를 해결하였습니다. BFS를 통해 a부터 각각의 노드를 탐색하고 b가 되면 해당 시간을 리턴하도록 하였습니다. package BOJ.bfs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; impo..

알고리즘 2022.07.17

프로그래머스 네트워크 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 BFS를 통해 해당 문제를 해결하였습니다. BFS를 통해 해당 노드에 연결되어 있는 노드를 방문하도록 하였고, 이 BFS를 몇번 진행하는지를 세어 결과값을 도출하였습니다. import java.util.*; class Solution { public int solution(int n, int[][] computers) { int answer = 0; boolean[] visited = new..

알고리즘 2022.07.16

프로그래머스 문자열 내림차순으로 배치하기 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/12917 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 정렬할 때 문자를 int값으로 변경하고 모두 'a'를 빼고, 추가적으로 대문자라면 'A'를 빼주었습니다. 그리고 역순 정렬을 통해 내림차순으로 정렬하였습니다 import java.util.*; class Solution { public String solution(String s) { String answer = ""; Character[] chArr = new Character[s.leng..

알고리즘 2022.07.15

백준 17609번 회문 (JAVA)

https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 저는 해당 문제를 투포인터를 이용하여 문제를 해결하였습니다. for문을 통해 먼저 회문인지를 확인하였습니다. 회문이 아니라면 유사회문인지를 투포인터를 통해 확인하였습니다. 회문이 아니라면 어디서 달라지는지를 보고 해당 부분에서 뒷문자열도 삭제해보고 앞문자열도 삭제해봐야 하기에 회문이였는지를 확인하는 메서드를 앞문자열을 삭제해 확인하고 뒷문자열을 삭제해 확인해 둘 다 회문이 아니라고 나오면 일반 문자열로 리턴하였습니다. pack..

알고리즘 2022.07.14

백준 23743번 방탈출 (JAVA)

https://www.acmicpc.net/problem/23743 23743번: 방탈출 첫 번째 줄에는 방의 개수 $N$과 설치할 수 있는 워프의 개수 $M$이 주어진다. ($2 \le N \le 200\,000$, $1 \le M \le 100\,000$) 다음 $M$개의 줄에는 워프의 정보를 나타내는 세 정수 $a_i$, $b_i$, $c_i$가 공백으 www.acmicpc.net 저는 크루스칼을 이용해 문제를 해결하였습니다. 같은 MST알고리즘에서 프림을 사용하지 않고 크루스칼을 이용한 이유는 방의 개수에 비해 edge가 적기 때문입니다. 크루스칼을 통해 MST를 만들었는데, 이때 비상탈출구는 따로 0인덱스를 사용하여 문제를 해결하였습니다. (방들을 모두 연결해도 비상탈출 하나는 있어야 탈출이 가..

알고리즘 2022.07.13