코테/백준

📖 문제 https://www.acmicpc.net/problem/2493  💡  풀이 방식• 스택필요 자료구조- (탑 번호, 높이) 값을 저장하는 int[]형 스택 탑의 높이를 미리 입력받지 않아도 되고,탑의 높이를 입력 받으면서 이미 입력받은 값들과 비교하며 풀면 된다.  - 입력받은 높이가 현재 높이보다 낮은 경우, 해당 탑에는 레이저가 닿을 수 없으므로 제거(pop)한다.- 현재 스택이 비어있다면, 레이저가 닿을 수 있는 탑이 없으므로 0을 출력한다.   💥 유의사항데이터 크기가 크므로, 완전탐색을 썼다가는 시간 초과가 발생한다.  🔺 코드12345678910111213141516171819202122232425262728293031323334353637import java.util.*;i..
📖 문제 https://www.acmicpc.net/problem/12919   💡  풀이 방식• 재귀S에서 T를 만드는 재귀를 수행하는 게 아니고,T에서 문자열을 지우면서 S를 만드는 재귀를 수행하는 것이다.[재귀 함수]- (종료 조건) 첫 번째 문자열과 두 번째 문자열의 길이가 같고, 두 문자열이 같다면, 1을 출력한다. (같지 않다면 0을 출력한다.)- 두 번째 문자열의 마지막 글자가 A인 경우> 마지막 글자를 하나 뺀 값을 재귀함수의 인자로 갖고 가 재귀를 수행한다.- 두 번째 문자열의 맨 앞 글자가 B인 경우 > 맨 앞 글자를 하나 빼고, 뒤집은 값을 인자로 가져가 재귀를 수행한다.   🔺 코드123456789101112131415161718192021222324252627282930313..
📖 문제 https://www.acmicpc.net/problem/2304   💡  풀이 방식•  브루트포스 가장 높은 길이를 기준으로 왼쪽 부분과 오른쪽 부분으로 나눠 지붕을 메꾼다. 1. 기둥들의 위치와 높이를 입력받는다.2. 입력받은 기둥들의 정보를 위치 기준 오름차순 정렬한다.3. 가장 높은 기둥의 길이를 기준으로 왼쪽 부분에서 기둥이 커지는 구간의 면적만 계산한다. (맨 왼쪽 0부터 pivot까지)4. 가장 높은 기둥의 길이를 기준으로 오른쪽 부분에서 기둥이 작아지는 구간의 면적만 계산한다. (맨 오른쪽부터 pivot까지)5. 제일 큰 기둥의 높이를 더한다.   🔺 코드12345678910111213141516171819202122232425262728293031323334353637383..
📖 문제 https://www.acmicpc.net/problem/1958   💡  풀이 방식• LCS문자열이 3개이므로, 3차원 DP로 LCS 길이를 구하면 된다. - 3중 for문을 이용해 i == j == k인 지점을 찾아 갯수를 센다.(i, j, k) = max( (i-1, j, k), max( (i, j-1, k), (i, j, k-1) ) )   🔺 코드123456789101112131415161718192021222324252627282930313233import java.util.*;import java.io.*; public class Main {    static int[][][] dp;    // 3차원 DP    static char[] A,B,C;        public s..
📖 문제 https://www.acmicpc.net/problem/20364    💡  풀이 방식• 트리필요 자료구조- 점유된 땅의 수 저장하는 int형 배열- 점유되었는지 상태를 표시할 boolean형 배열  1. 땅 개수 N과 오리 수 Q를 입력받는다.2. i번째 오리가 원하는 땅 번호를 입력받는다.3. 2에서 입력받은 오리가 원하는 땅 번호를 갈 수 있는지 확인해 출력한다.  - 원하는 땅에서 1까지 거슬러 올라오며(/2) 점유된 상태인지 확인한다.    ㄴ 점유된 상태인 경우, 점유된 땅의 번호를 정답으로 출력한다.    ㄴ 정답이 초기값 0에서 바뀌지 않은 경우, 해당 번호의 땅을 점유 처리한다.   🔺 코드1234567891011121314151617181920212223242526272..
📖 문제 https://www.acmicpc.net/problem/16960   💡  풀이 방식• 구현필요 자료구조- 램프 갯수 저장용, 크기가 M+1인 int형 배열- 램프 정보 저장 리스트 배열 1. 각 스위치에 몰린 램프 정보를 저장한다.for(int i = 1 ; i 0) { int tmp = Integer.parseInt(st.nextToken()); list[i].add(tmp); arr[tmp]++; }}   2. 스위치 수만큼 반복문을 돌면서, 각각의 스위치에 몰린 램프의 idx 값을 배열에서 하나씩 빼본다.그러면서 유지가 되는지/아닌지 flag 변수로 판단한다.boolean flag = true; // 하나씩 빼면서 유지되는지 ..
📖 문제 https://www.acmicpc.net/problem/3029   💡  풀이 방식• 문자열1. 첫째 줄에 입력받은 현재 시간을 세미콜론(:) 단위로 분리한다.2. 둘째 줄에 입력받은 나트륨 던질 시간을 세미콜론(:) 단위로 분리한다.3. 둘째 줄에서 입력받은 (시간-분-초)를 첫째 줄에서 입력받은 (시간-분-초)로 빼는 연산을 수행한다.4. 연산 후, 정인이가 기다려야 하는 시간을 출력해야 할 때 시간/분/초 중 한 자리 수의 경우, 앞에 0을 붙여 출력하도록 한다. (두 자릿수면 그냥 출력한다.)   💥 유의사항정인이는 적어도 1초를 기다린다고 했으므로,1과 2에서 입력받은 시간이 같은 경우, 24:00:00이 나오도록 처리해 줘야 한다.   🔺 코드123456789101112131..
📖 문제 https://www.acmicpc.net/problem/2668   💡  풀이 방식• DFS1. 위쪽 줄의 숫자들을 출발지로, 아랫 줄의 숫자들을 도착지로 한 그래프를 생성한다.2. 그래프 내에서 생성된 사이클을 찾고, 사이클을 만드는  숫자를 리스트에 넣고 오름차순 정렬해 출력한다.  - 사이클 발생 여부 확인 : [DFS] 출발 숫자 > arr[출발 숫자] > arr[arr[출발 숫자]]  - 탐색하다가 출발 숫자를 다시 만나면 사이클 하나가 완성된 거고, 이 값을 리스트에 넣는다.   🔺 코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import java.util...
📖 문제 https://www.acmicpc.net/problem/20125   💡  풀이 방식• 구현- 심장 : 본인의 위치 포함 본인을 둘러싼 상하좌우가 모두 쿠키(*)일 때 심장이다.- 허리 : 심장 위치를 기준으로 아래쪽(행 방향+1)으로 계속 쿠키인 부분- 왼팔 : 심장부터 왼쪽(열-1)으로 뻗어나간 부분- 오른팔  : 심장부터 오른쪽(열+1)으로 뻗어나간 부분- 왼다리 : 허리 왼쪽 아래쪽부터 아래쪽(행+1)으로 뻗어나간 부분- 오른다리 : 허리 오른쪽 아래쪽부터 아래쪽(행+1)으로 뻗어나간 부분   🔺 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555..
imname1am
'코테/백준' 카테고리의 글 목록 (3 Page)