본문 바로가기

분류 전체보기

(215)
백준 1965 상자넣기 (Java) 1. 문제 링크 1965번: 상자넣기 정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 최장증가수열 개념을 그대로 쓰면 되는 기본적인 문제이다. 2번째 코드는 이진탐색을 이용한 코드이다. 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new Buff..
백준 3187 양치기 꿍 (Java) 1. 문제 링크 3187번: 양치기 꿍 입력의 첫 번째 줄에는 각각 영역의 세로와 가로의 길이를 나타내는 두 개의 정수 R, C (3 ≤ R, C ≤ 250)가 주어진다. 다음 각 R줄에는 C개의 문자가 주어지며 이들은 위에서 설명한 기호들이다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 모든 곳을 돌면서 방문하지 않은 곳 중 양이나 늑대가 있는 곳에서 양의 수와 늑대의 수를 0으로 초기화하고 BFS 탐색을 한다. 시작 지점을 큐에 넣고 BFS 탐색을 시작한다. 큐에서 뺀 곳이 늑대일 경우 늑대의 값을 증가하고, 양일 경우 양의 수를 증가한다. BFS를 끝내고 다시 왔을 때, 양이 많으면 양만 살아남고, 나머지의 경우에는 늑대만 살아남는다. 4. 코드 import java.io..
백준 16139 인간-컴퓨터 상호작용 1. 문제 링크 16139번: 인간-컴퓨터 상호작용 첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 1. 누적합을 이용해 길이마다 알파벳 26개의 누적합이 저장된 배열을 만든다. 2. 입력받은 알파벳에서 시작-1과 끝의 값 차이를 출력한다 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[]..
백준 15685 드래곤 커브 (Java) 1. 문제 링크 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 1. 0세대 드래곤의 위치를 넣은 상태로 드래곤 커브를 시작한다. 2. 지금 위치에서 세대가 끝날 때까지 반복한다. 2-1. 새로운 세대는 기존 세대에서 회전이 필요하기 때문에 회전이 시작되는 부분인 끝점부터 시작점까지 역순으로 넣는다. 2-2. 끝점 기준 시계 방향은 지금 방향의 반시계이므로 주어진 방향과 동일하게 사용하기 때문에 +1한 값을 넣는다. 3. 모든 방향을 다 넣었다..
백준 1915 가장 큰 정사각형 (Java) 1. 문제 링크 1915번: 가장 큰 정사각형 첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 예전에 올렸던 목장 건설하기와 거의 같은 문제이다. 0은 true로, 1은 false로 저장한다. 0이 나오면 해당위치에서 (-1, 0), (-1, -1), (0, -1)의 dp 중 최솟값을 선택하고 1을 더한 값으로 저장한다. 2-1. 세 좌표는 정사각형의 각 모서리로 포함되는 위치들이다. 2-2. 그 중 제일 작은 값만큼만 만들 수 있고, 지금 자리도 포함할 수 있으니까 1을 더한다. 좌표에서 dp를 구할 때마다 최댓값을 갱신한다. 4. 코드 import java.io.B..
백준 11651 좌표 정렬하기 2 (Java) 1. 문제 링크 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 입력받은 x, y를 Point에 넣는다. Comparable를 이용해서 y 좌표가 같을 경우 x 좌표를 비교하게 한다. Point를 넣은 pq가 빌 때까지 빼면서 뺀 값의 x, y 좌표를 출력한다. 4. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputS..
SSAFY 9기의 1학기 후기 겸 회고 (요모조모 생각나는대로 쓰기) 두근두근 시작 싸피에 붙었다고 호다닥 방 구하고~ 짐 옮기고~ 했던 기억이 아직 생생한데 벌써 1학기를 마치고 후기를 쓰고 있다. 내가 다니고 있는 부울경 캠퍼스는 사업장 내에 위치하고 있어 사진을 안 찍었다는 점...ㅠ 1월 4일에 입과했고 2주간 스타트 캠프를 들었다. OT 듣고, 8기들 경기도 보고, 로봇도 만들어보고, 메타버스 체험도 해보면서 이것저것 재미난 것들을 했다. 사실 이때 반 동기랑 친해질 수 있을 줄 알았는데 코로나 때문에 마스크도 쓰고 있고, 약간 조심스러운 느낌이라 막 친해지지는 못한게 아직도 아쉽다. 대부분 팀 활동도 자리 순으로 진행했어서 같은 사람들이랑만 하다 보니 많은 사람들과 대화를 못한 것 같기도 하다. 반 배정 완료 반 배정 테스트 이후... 생각과는 달리 반의 절반이..
백준 5052 전화번호 목록 (Java) 1. 문제 링크 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 1. N개의 전화번호를 입력받아 list에 넣는다. 2. list를 정렬한다. (문자열) 3. 비교 문자열보다 길이가 긴 경우에만 앞의 문자열만큼에서 같은지 판단한다. 3-1. 비교 문자열과 동일할 경우 일관성을 유지하지 못해 끝낸다. 4. 비교 문자열을 현재 문자열로 바꾼다. 5. 위의 과정을 반복하고 출력한다. 4. 코드 import java.io.BufferedReader; i..