분류 전체보기
-
https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 1439, 뒤집기 [ 난이도 : 실버 1 ] 이번 문제는 브루트 포스 알고리즘 분야지만 그래프 탐색과 dfs 를 사용해서 풀어보겠다. # Process main : 안전영역을 구하는 문제이다. 2차원 배열의 형태가 주어졌을 때, 특정 수 이상의 범위로 안전범위를 지정하여 그 최대 갯수를 구하는 문제이다. 제일 먼저 입력을 받으면서 모든 원소의 값을 list 로 저장해주어야 한다. (중복을 허용하지 않기 ..
(JAVA) [BOJ]백준 2468번, 안전영역https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 1439, 뒤집기 [ 난이도 : 실버 1 ] 이번 문제는 브루트 포스 알고리즘 분야지만 그래프 탐색과 dfs 를 사용해서 풀어보겠다. # Process main : 안전영역을 구하는 문제이다. 2차원 배열의 형태가 주어졌을 때, 특정 수 이상의 범위로 안전범위를 지정하여 그 최대 갯수를 구하는 문제이다. 제일 먼저 입력을 받으면서 모든 원소의 값을 list 로 저장해주어야 한다. (중복을 허용하지 않기 ..
2023.04.24 -
https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 1806, 부분합 [ 난이도: 골드4 ] 이번 문제는 투포인터를 사용한 문제이다. # Process Main : 10,00 이하의 자연수로 이루어진 길이 N짜리 수열과, N개의 숫자 그리고 합인 S가 주어진다. 가장 짧은 것의 길이를 구하는 문제이기 때문에 출력할 값인 ans 는 배열의 크기 +1 로 초기화 해주겠다. 1부터 N까지 왼쪽 포인터를 순회하면서, 오른쪽 포인터로는 N을 ..
(JAVA) [BOJ]백준 1806번, 부분합https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 1806, 부분합 [ 난이도: 골드4 ] 이번 문제는 투포인터를 사용한 문제이다. # Process Main : 10,00 이하의 자연수로 이루어진 길이 N짜리 수열과, N개의 숫자 그리고 합인 S가 주어진다. 가장 짧은 것의 길이를 구하는 문제이기 때문에 출력할 값인 ans 는 배열의 크기 +1 로 초기화 해주겠다. 1부터 N까지 왼쪽 포인터를 순회하면서, 오른쪽 포인터로는 N을 ..
2023.04.24 -
https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 1439, 뒤집기 이번 문제는 StringTokenizer 을 사용하면 너무나도 쉽게 풀 수 있다. # Process main : 예제 입력 4번을 예시로 들어보자. 11001100110011000001 이 입력을 1과 0 으로 쪼개보면 11 00 11 00 11 00 11 00000 1 이렇게 표기할 수 있다. 1 은 {11, 11, 11, 11, 1} , 0은 {00, 00, 00. 00000..
(JAVA) [BOJ]백준 1439번, 뒤집기https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 1439, 뒤집기 이번 문제는 StringTokenizer 을 사용하면 너무나도 쉽게 풀 수 있다. # Process main : 예제 입력 4번을 예시로 들어보자. 11001100110011000001 이 입력을 1과 0 으로 쪼개보면 11 00 11 00 11 00 11 00000 1 이렇게 표기할 수 있다. 1 은 {11, 11, 11, 11, 1} , 0은 {00, 00, 00. 00000..
2023.04.22 -
https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 1715, 카드 정렬하기 이번 문제는 우선순위 큐를 사용해서 풀어보겠다. N의 범위가 1 - 100,000 이고, 카드의 최대 값은 1,000이지만 카드를 합쳐가는 과정에서 모든 카드의 수를 계산한다면 int 의 범위를 넘을 수 있기 때문에 Long 을 사용해주겠다. # Process main : 입력받은 값들을 큐에 넣어주고 가장 작은 2장의 카드를 뽑아 더한 후에 다시 큐에 넣어..
(JAVA) [BOJ]백준 1715번, 카드 정렬하기https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 1715, 카드 정렬하기 이번 문제는 우선순위 큐를 사용해서 풀어보겠다. N의 범위가 1 - 100,000 이고, 카드의 최대 값은 1,000이지만 카드를 합쳐가는 과정에서 모든 카드의 수를 계산한다면 int 의 범위를 넘을 수 있기 때문에 Long 을 사용해주겠다. # Process main : 입력받은 값들을 큐에 넣어주고 가장 작은 2장의 카드를 뽑아 더한 후에 다시 큐에 넣어..
2023.04.20 -
https://www.acmicpc.net/problem/12904 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net 12904, A와 B 이번 문제는 역으로 해결해 나가면 쉽게 풀 수 있다. # Process main : 조건이 2개가 있다. 1. 문자열의 뒤에 A를 추가한다. 2. 문자열을 뒤집고 뒤에 B를 추가한다. 주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지를 판단하는 문제이다. 이 조건을 반대로 생각해보자. 주어진 B의 텍스트에1. 문자열의 뒤에 A가 있..
(JAVA) [BOJ]백준 12904번, A와 Bhttps://www.acmicpc.net/problem/12904 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net 12904, A와 B 이번 문제는 역으로 해결해 나가면 쉽게 풀 수 있다. # Process main : 조건이 2개가 있다. 1. 문자열의 뒤에 A를 추가한다. 2. 문자열을 뒤집고 뒤에 B를 추가한다. 주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지를 판단하는 문제이다. 이 조건을 반대로 생각해보자. 주어진 B의 텍스트에1. 문자열의 뒤에 A가 있..
2023.04.19 -
https://www.acmicpc.net/problem/1342 1342번: 행운의 문자열 민식이와 준영이는 자기 방에서 문자열을 공부하고 있다. 민식이가 말하길 인접해 있는 모든 문자가 같지 않은 문자열을 행운의 문자열이라고 한다고 한다. 준영이는 문자열 S를 분석하기 시작 www.acmicpc.net 1342, 폴리오미노 이번 문제는 String 과 replace 를 사용하면 너무나도 쉽게 풀 수 있다. # Process main : "XXXX" 는 "AAAA"로, "XX"는 "BB" 로 바꿔주되 사전순으로, 전환이 불가능하다면 -1을 출력해주면 된다. 즉, 차례대로 전환해주고 X가 남아있다면 -1 을 출력해준다. str = str.replaceAll("XXXX", "AAAA"); str = str..
(JAVA) [BOJ]백준 1342번, 폴리오미노https://www.acmicpc.net/problem/1342 1342번: 행운의 문자열 민식이와 준영이는 자기 방에서 문자열을 공부하고 있다. 민식이가 말하길 인접해 있는 모든 문자가 같지 않은 문자열을 행운의 문자열이라고 한다고 한다. 준영이는 문자열 S를 분석하기 시작 www.acmicpc.net 1342, 폴리오미노 이번 문제는 String 과 replace 를 사용하면 너무나도 쉽게 풀 수 있다. # Process main : "XXXX" 는 "AAAA"로, "XX"는 "BB" 로 바꿔주되 사전순으로, 전환이 불가능하다면 -1을 출력해주면 된다. 즉, 차례대로 전환해주고 X가 남아있다면 -1 을 출력해준다. str = str.replaceAll("XXXX", "AAAA"); str = str..
2023.04.19 -
https://www.acmicpc.net/problem/11000 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 11000, 강의실 배정 이번 문제는 최소 우선순위 큐와 시작 시간과 종료 시간을 저장하는 class 를 생성하여 해결하였다. # Process Class, Lecture : 시작시간과 종료시간을 저장하는 Lecture Class 를 생성하였다. 생성자로 두 시간을 저장해주는 간단한 설계이다. static class Lecture { public int sdate; public int edate; Lecture(int startDate, int endDate)..
(JAVA) [BOJ]백준 11000번 : 강의실 배정https://www.acmicpc.net/problem/11000 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 11000, 강의실 배정 이번 문제는 최소 우선순위 큐와 시작 시간과 종료 시간을 저장하는 class 를 생성하여 해결하였다. # Process Class, Lecture : 시작시간과 종료시간을 저장하는 Lecture Class 를 생성하였다. 생성자로 두 시간을 저장해주는 간단한 설계이다. static class Lecture { public int sdate; public int edate; Lecture(int startDate, int endDate)..
2023.04.19 -
https://www.acmicpc.net/problem/15903 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 15903번, 카드 합체 놀이 이번 문제는 최소 우선순위 큐를 사용하고 범위를 주의해야 하는 문제이다. int 가 아닌 Long 을 사용하였는데 이유는 아래에서 설명하겠다. # Process main : x번 카드와 y번 카드 두장을 골라 x+y 의 값으로 x 와 y 번 카드를 덮어쓰는 문제이다. 카드의 수의 최대 값은 1,000,000이다. 모든 최대 경우를 계산했을 때, 1000장의 카드 모두 1,000,000 이고 합체를 15,000번을 진행하게 된다면 ..
(JAVA) 백준 15903번 : 카드 합체 놀이https://www.acmicpc.net/problem/15903 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 15903번, 카드 합체 놀이 이번 문제는 최소 우선순위 큐를 사용하고 범위를 주의해야 하는 문제이다. int 가 아닌 Long 을 사용하였는데 이유는 아래에서 설명하겠다. # Process main : x번 카드와 y번 카드 두장을 골라 x+y 의 값으로 x 와 y 번 카드를 덮어쓰는 문제이다. 카드의 수의 최대 값은 1,000,000이다. 모든 최대 경우를 계산했을 때, 1000장의 카드 모두 1,000,000 이고 합체를 15,000번을 진행하게 된다면 ..
2023.04.18