알고리즘
-
[백준] 2164번 : 카드2 - 자바(JAVA)알고리즘/백준 2022. 8. 24. 00:01
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 문제 해석 Stream을 통해서 N까지 번호를 생성하고 LinkedList를 통해 removeFirst, removeLast 등의 연산을 통해 효율적으로 카드 제거 및 옮기기를 수행합니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Link..
-
[백준] 16953번 : A -> B - 자바(JAVA)알고리즘/백준 2022. 8. 22. 00:01
https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 문제 해석 정수 A와 B가 주어집니다. A로 B를 만드려고 하는데 두가지 연산을 수행할 수 있습니다. A * 2 A * 10 + 1 이때 필요한 연산의 최솟값을 구해보려고 합니다. 문제 풀이 전 설계 Queue를 사용하고 Number 객체를 만들어 (현재 수, 연산의 step)을 관리합니다. 이때 수는 항상 커집니다. 따라서 Queue에 add하기 전에 현재 수가 B보다 큰 경우에는 add하지 않습니다. 그리고 B가 10억까지 주어질 수 있습니다. A를 연산하는 과정에 overflow가 발생할 수 있어서 long 타입을 ..
-
[백준] 1181번 : 단어 정렬 - 자바(JAVA)알고리즘/백준 2022. 8. 21. 00:01
https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제 해석 알파벳으로 이루어진 N개의 문자열을 정렬해야 합니다. 길이가 짧은 것부터 길이가 같으면 사전 순으로 문제 풀이 전 설계 람다를 활용하여 Comparator를 구현하고 스트림을 활용하여 Set 을 List로 변환하고자 합니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr..
-
[백준] 1018번 : 체스판 다시 칠하기 - 자바(JAVA)알고리즘/백준 2022. 8. 20. 00:01
https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 문제 해석 N*M의 보드가 주어집니다. 이 보드는 흰색 또는 검정색으로 칠해져있습니다. 여기에서 8x8 크기의 체스판으로 잘라낸 후 체스판처럼 칠하고자 합니다. 이때 체스판처럼 이미 칠해져 있으면 가장 좋은 경우입니다. 다시 칠해야 하는 정사각형의 최소 개수를 구하세요 문제 풀이 전 설계 8 x 8 크기의 검정색으로 시작하는 체스판, 흰색으로 시작하는 체스판을 미리 그려놓습니다. 그리고 보..
-
[백준] 111720번 : 숫자의 합 - 자바(JAVA)알고리즘/백준 2022. 8. 19. 00:01
https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 문제 해석 54321 이렇게 이루어진 문자열을 모두 더해서 출력하는 문제입니다. 문제 풀이 전 설계 문자열을 하나씩 쪼개서 int로 바꾸고 모두 더하면 됩니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main_11720_숫자의합 { public static void main(Stri..
-
[백준] 2533번 : 사회망서비스(SNS) - 자바(JAVA)알고리즘/백준 2022. 8. 14. 00:01
https://www.acmicpc.net/problem/2533 2533번: 사회망 서비스(SNS) 첫 번째 줄에는 친구 관계 트리의 정점 개수 N이 주어진다. 단, 2 ≤ N ≤ 1,000,000이며, 각 정점은 1부터 N까지 일련번호로 표현된다. 두 번째 줄부터 N-1개의 줄에는 각 줄마다 친구 관계 트리의 에 www.acmicpc.net 문제 해석 얼리 어답터는 어떤 소식을 가장 먼저 알게 됩니다. 주변에 연결되어 있는 친구들끼리만 해당 소식을 전파할 수 있습니다. 모든 정점 사이에 이들을 잇는 경로가 존재하고 사이클이 존재하지 않는다고 고려합니다. 모든 개인이 새로운 소식을 받기 위한 최소 얼리 어답터의 수를 구하세요 N은 최대 백만 개입니다. 문제 풀이 전 설계 이분 탐색을 활용한 파라미터 서..
-
[백준] 21939번 : 문제 추천 시스템 Version 1 - 자바(JAVA)알고리즘/백준 2022. 8. 13. 00:01
https://www.acmicpc.net/problem/21939 21939번: 문제 추천 시스템 Version 1 tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령 www.acmicpc.net 문제 해석 문제 번호, 난이도로 정리되어 있습니다. 명령어는 총 3가지가 존재합니다. recommend x x가 1인 경우 추천 문제 리스트에서 가장 어려운 문제의 번호를 출력합니다. 가장 어려운 문제가 어려 개라면 문제 번호가 큰 것을 출력합니다. x가 -1인 경우 가장 쉬운 문제의 번호를 출력합니다. 만약 쉬운 문제가 여러 개라면 문제 번호가 작은 것으로 출력합니..
-
[백준] 1062번 : 가르침 - 자바(JAVA)알고리즘/백준 2022. 8. 12. 00:01
https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 문제 해석 학생들은 K개의 글자로만 이루어진 단어만을 읽을 수 있습니다. 어떤 K개의 글자를 가르쳐야 학생들이 읽을 수 있는 단어의 개수가 최대가 될까요? 남극 언어의 모든 단어는 "anta"로 시작하고 "tica"로 끝납니다. 문제 풀이 전 설계 항상 a, n , t, i , c라는 5개의 단어는 꼭 필요합니다. 남극 언어의 모든 단어가 anta, tica가 포함되기 때문입니다. subS..