알고리즘/백준 62

[BaekJoon] 백준 13305번 _ 주유소 for JAVA _ 그리디 알고리

https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 내가 푼 방법은 기름값이 싸면 만땅 충전해서 가는게 좋음 그래서 이전 기름값과 비교해서 작은곳에서 다음다음 갈 것 까지 만땅 충전해서 가는것이다... 그러니까 기름값 싼 곳을 찜해놓고 다음 기름값, 다다음 기름값, 다다다음 ... 이렇게 비교해서 작은곳에서 만땅 넣는다. 코드 import java.io.BufferedReader; import java.io.IOException; i..

알고리즘/백준 2022.01.17

[BaekJoon] 백준 1931번 _회의실 배정 for JAVA _ 그리디 알고리즘

https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net https://st-lab.tistory.com/243 엄청난 블로그 설명...!! 풀이도 저 블로그에 아주 잘 설명되어있다.~ 알고리즘을 떠올리지 못했다. 이런 문제를 풀 때는 그려보는게 짱이다! 라는걸 다시 느낌......~ 다음부터는 꼭! 그려보도록 하자.. 2주정도 어학성적때매 쉬었더니 감 더 떨어짐 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arr..

알고리즘/백준 2022.01.17

[BaekJoon] 백준 1541번_잃어버린 괄호 for JAVA _그리디 알고리즘

https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 푸는 방법은 최소값으로 괄호를 만들기 위해서는 - 뒤의 +가 있는 숫자들까지만 괄호를 쳐주면 된다. 무슨 말이냐면... 예를 들어 1+2-3+4+5-10+5 = 2 인데 2- 뒤의 3+4+5를 묶고 - 뒤에 10+5를 묶는다는 것이다. 그래서 1+2-(3+4+5) -(10+5) = -24 라는 값이 나온다. 푸는 방법은 바로 떠올렸는데... string으로 받아올 저 케이스를 어떻게 숫자와 ..

알고리즘/백준 2022.01.05

[BaekJoon] 백준 11399번_ ATM for JAVA

ATM 얘도 그리디 알고리즘 문제 유형에 있는 문제이다. https://ticssfm.tistory.com/32?category=1008893 [Algorithm] 탐욕(그리디) 알고리즘 (greedy algorithm) 그리디 알고리즘은 문제를 해결하는 과정에서 가장 좋다고 생각하는 방법을 선택하는 알고리즘이다. 예를 들어 노드 값의 최대 합은 5 -> 7 -> 9를 거쳐 21임을 알 수 있다. 그러나 그리디 알고리즘 ticssfm.tistory.com 문제를 표로 만들어서 살펴보자 예시에서는 P1 = 3, P2 = 1 ... 이런식으로 5가지 수를 받았다. 이 줄을 오름차순 정렬 한 후 계산을 수행하는 것이 가장 효율적이라고 나타낸다. 그러므로 입력을 받은 후 오름차순 정렬을 하고 계산을 수행해야 하..

알고리즘/백준 2021.10.11

[BaekJoon]백준 11047번_동전0 for JAVA

동전0 이 문제는 그리디 알고리즘 유형에 있는 문제이다. https://ticssfm.tistory.com/32?category=1008893 [Algorithm] 탐욕(그리디) 알고리즘 (greedy algorithm) 그리디 알고리즘은 문제를 해결하는 과정에서 가장 좋다고 생각하는 방법을 선택하는 알고리즘이다. 예를 들어 노드 값의 최대 합은 5 -> 7 -> 9를 거쳐 21임을 알 수 있다. 그러나 그리디 알고리즘 ticssfm.tistory.com 필요한 동전의 개수라는 말만 봐도 그리디를 사용함을 알 수 있다. 그리디는 가장 최적의 값을 우선적으로 할당해주는 알고리즘이므로 본 문제를 풀 때 가장 큰 값을 먼저 대입해봐야한다. Ai는 Ai-1의 배수라는 말은.. 어차피 입력은 여기서 해줄 것이기 ..

알고리즘/백준 2021.10.05

[BaekJoon] 백준 2581번_ 소수 for JAVA

소수 정말 개많이 틀린 문제;;;.... 결국 남의 코드를 참고했다. 예전에 정리했던 적이 있었는데 최적의 코드라고 보기는 어려웠고 백준에서 맞은 사람의 코드도 살펴보았는데 다들 비슷하게 푼 느낌이라 넘어갔었다. 아무튼 이번 문제는 에라토스테네스의 체라는 방법을 다들 사용하였다...!! 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Baek2581 { // 소수 public static boolean prime[]; public static void main(String[] args) throws IOException { BufferedReader br = ..

알고리즘/백준 2021.10.04

[BaekJoon] 백준 1978번 _소수찾기 for Java

https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 소수찾기 https://ticssfm.tistory.com/19?category=1008893 [Algorithm][Java] 소수를 나열하는 알고리즘, 소수인지 판단하기 정수 n에 대하여 아래의 조건을 만족시키면 소수임을 알 수 있다. 2부터 n-1까지의 어떤 정수로도 나누어떨어지지 않는다. 먼저 어떤 정수 이하의 소수를 모두 나열하는 알고리즘을 직관적으로 ticssfm.tistory.com 전에 한번 정리한적이 있었던 문제였다. 소수임을 판단하는 방법에는 3가지..

알고리즘/백준 2021.09.25

[BaekJoon] 백준 1011번 _Fly me to the Alpha Centauri for JAVA

https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 먼저 문제를 보고 2^31값까지 가능하므로 int값을 사용하기로 하였다. 이 문제에서 중요한 것을 x와 y의 값보다는 x와 y의 거리이다. 그래서 y - x 값인 거리값을 사용할 것이다. 문제가 너무 복잡하니까 표로 정리해서 어떤 값을 넣으면 어떤 값이 나오는지 확인해보자!! 거리 move count (출력값) max움직임 1 1 1 1 2 1 1 2 ..

알고리즘/백준 2021.09.24

[BeakJoon] 백준 10757번_ 큰 수 A+B for Java

https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 먼저 이 문제를 일반적인 Scanner를 이용하여 int로 받아 출력해보았다. 이 문제는 10의 10000승까지 입력받을 수 있으므로 -2147483647 ~ 2147483647 까지만 들어갈 수 있는 int값은 사용할 수 없다. long타입도... -9223372036854775808 ~ 9223372036854775807 라서 넘어간다~~!! 그러므로 다른 방법을 사용해야하는데 이리저리 찾아보다 BigInteger라는 것을 알게되었다. BigInteger는 문자열 형태로 이루어져 숫자의 범위를 무한하게..

알고리즘/백준 2021.09.21

[BaekJoon] 백준 2839번_설탕 배달 for Java

이 문제는.... 은근히 머리 굴려야 했다. 쉽게 보다가 test case 여러개 안해봤으면 틀릴뻔~~!!!! 내가 푼 방법은 몫과 나머지의 상관관계를 생각하면서 풀었다! 가장 효율적으로 가야하니까 5로 나누고 몫을 하나씩 줄이면서 나머지 값을 3으로 나눈 나머지가 0이면 값이 존재한다고 가정했다. 코드 package BeakJoon; import java.util.Scanner; public class Beak2839 { // 설탕 배달 public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.nextInt(); if(N >= 5) { int i = N / 5; // 몫 for(int k = i..

알고리즘/백준 2021.09.19