전체 글 136

[백준 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

[백준 2668] 숫자고르기 (JAVA)

https://www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net DFS를 사용하여 해결할 수 있었다. 1->3->1 , 5->5 와 같이 2번째 값과 1번째 값이 이어지는 것들을 찾으면 된다. 1. 배열에 2번째 줄 입력 값을 넣는다. 2. 이어지는 것들을 넣을 arryList, 방문 확인할 배열을 선언한다. 3. 첫번째부터 포문을 돌려서 방문을 표시하고, 해당 인덱스(첫번째 줄 값)을 2번째 줄 값으로 갖고 있는 애들을 확인한다. import j..

Java 2023.04.30

[백준 4179] 불! (JAVA)

https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 최단 시간을 구하는 문제로 최단 거리를 구하는 bfs를 이용하여 문제를 풀었다. 큐에 지훈이 정보, 불의 정보를 넣었다. Node 객체를 생성하여 좌표와 카운트, 지훈인지 불인지 구분하는 name을 필드로 가지게 했다. 1. 불 이동 -> 지훈 이동 2. 방문했던 위치인지 확인 3. 동서남북으로 포문 돌려서 벽과 불이 아닐 경우에는 세가지의 작업을 한다. 1)해당 좌표의 값을 바꾸..

Java 2023.04.29

[백준 2179] 비슷한 단어 (JAVA)

https://www.acmicpc.net/problem/2179 2179번: 비슷한 단어 첫째 줄에 S를, 둘째 줄에 T를 출력한다. 단, 이 두 단어는 서로 달라야 한다. 즉, 가장 비슷한 두 단어를 구할 때 같은 단어는 제외하는 것이다. www.acmicpc.net ArrayList에 넣어서 비교하면 되는 문제였다. 포문에서 char배열로 변환한 후 비교했었는데 이러면 메모리 초과가 발생되었다 .. charAt으로 해당 인덱스로 잘라서 비교함으로써 해결~~~ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class Ma..

Java 2023.04.28

[백준 1522] 문자열 교환 (JAVA)

https://www.acmicpc.net/problem/1522 1522번: 문자열 교환 a와 b로만 이루어진 문자열이 주어질 때, a를 모두 연속으로 만들기 위해서 필요한 교환의 회수를 최소로 하는 프로그램을 작성하시오. 이 문자열은 원형이기 때문에, 처음과 끝은 서로 인접해 www.acmicpc.net a의 갯수를 세어서 그 갯수만큼의 범위를 돌면서 b의 최솟값을 찾으면 된다! aaaabbbbba 인 경우에는, a가 5개 이므로 시작 지점을 0~9(문자열 길이 10) 범위는 5 1) aaaab -> 1개 2) aaabb -> 2개 3) aabbb -> 3개 4) abbbb -> 4개 5) bbbbb -> 5개 6) bbbba -> 4개 7) bbbaa -> 3개 8) bbaaa -> 2개 9) ba..

Java 2023.04.28