백준 111

[백준 1527] 금민수의 개수 (JAVA)

https://www.acmicpc.net/problem/1527 1527번: 금민수의 개수첫째 줄에 A와 B가 주어진다. A는 1보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다. B는 A보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다.www.acmicpc.net 포문을 사용해서 String을 char로 쪼개서 비교하면 메모리 초과가 난다 ㅎㅎ,, dfs를 사용해서 0부터 시작해서 아래와 같이 하면 된다. import java.io.*; import java.util.*; public class Main { static int a, b, result = 0; public static void main(String[] args) throws IOExceptio..

Java 2023.05.12

[백준 1644] 소수의 연속합 (JAVA)

https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 1) n까지의 소수를 구한다. -> 에라토스테네스의 체를 사용하여 구해야 시간초과가 나지 않는다! 2) 소수 연속 합을 확인한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static int n; public static void main(String[] args) throws NumberFormatException, IOException { Buffered..

Java 2023.05.07

[백준 3273] 두 수의 합 (JAVA)

https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 이중 포문으로 하면 되지~ 생각했다가 역시나 시간초과 였다,, ㅎㅎㅎ 투 포인터를 사용해서 해결할 수 있는 문제였다. 1. 정렬 2. 양 끝의 번호를 더해서 해당 값이 이루어지는 지 확인하고 더 작다면 앞번호+1 , 더 크다면 뒷번호-1을 하여 반복한다. import java.io.BufferedReader; import java.io.IOE..

Java 2023.05.06

[백준 1300] K번째 수 (JAVA)

https://www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 일차원배열에 이차원배열의 값들을 넣고 sort하는 방식으로 접근했더니 역시나 10억이 넘기에 메모리 초과였다,, 1. 이분탐색으로, mid을 z번째 숫자라고 생각한다. 2. 줄마다 mid보다 작은 값이 몇개 있는지 확인한다. 즉, Math.min(mid / i번째 줄 , n)의 값을 모두 더한다. 3. 모두 더한 값이 k와 같을 경우-> result는 mid 이다! ..

Java 2023.05.05

[백준 1238] 파티 (JAVA)

https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 다익스트라를 두번 쓰면 해결할 수 있는 문제이다! 단방향이래서 일방통행인줄 알았는데 계속 오류가 나서 보니, 일방통행이 아니었다..! 목적지부터 pq에 넣어서 목적지와 연결된 곳들부터 거리를 계산해나간다! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader..

Java 2023.05.04

[백준 2580] 스도쿠 (JAVA)

https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 1. ArrayList에 빈칸 정보를 넣는다. 2. 1~9까지 포문을 돌면서 행,열, 3*3 배열에서 해당 값으로 세팅해도 되는지 확인한다. 된다면 arr배열에 해당 값으로 세팅하고, list의 다음 빈칸으로 넘어간다. 안된다면 arr배열에 0으로 세팅하고, 다음 숫자로 넘어간다. 3. 그렇게 list의 마지막까지 세팅할 값을 찾았다면 print~~ import java.io.BufferedRea..

Java 2023.05.03

[백준 2493] 탑 (JAVA)

https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 1. 들어오는 순서대로 스택에 값이 있다면 높이를 비교한다. 2. 스택에서 peek한 높이가 더 높을 경우에는 해당 값이 수신하는 건물이 된다. 3. 더 낮을 경우에는 이 건물의 영향을 받지 않을 것이기 때문에 pop한다! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impo..

Java 2023.05.02

[백준 15663] N과 M (9) (JAVA)

https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 다른 N과 M 시리즈의 문제 푼 방법에다가 만족하는 수열을 담을 LinkedHashSet을 추가하면 된다! LinkedHashSet은 순서가 보장되고 중복은 허용하지 않는다. LinkedHashSet에 만족하는 수열을 넣고, 마지막에 이들을 출력한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt..

Java 2023.05.02

[백준 15657] N과 M(8) (JAVA)

https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 현재까지는 N과 M 시리즈를 1~8까지 풀었는데, 다 비슷한 문제들이기에 1이랑 8을 기록해본다! 이 문제도 dfs로 해결하였다. n까지 포문을 돌면서 입력받은 값의 i번째 값을 첫번째로 선택한 값으로 한다! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import j..

Java 2023.05.01

[백준 15649] N과 M (JAVA)

https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net dfs를 사용하여 문제를 풀 수 있었다. 방문 여부를 확인하여 숫자를 뽑아서 배열에 넣고, m개를 뽑았을 경우에는 StringBuilder에 append한다! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public..

Java 2023.05.01