목록Problem Solving (88)
새발블로그
1. 패키지 임포트자바에서 클래스 또는 인터페이스를 사용하려면 해당 패키지를 import 해야 한다.import java.util.*; // 대부분의 코딩 테스트 문제에서 필수import java.io.*; // BufferedReader, BufferedWriter 등 입출력 시 필요java.util : ArrayList, HashMap, Queue, Scanner 등java.io : BufferedReader, InputStreamReader, BufferedWriter, OutputStreamWriter2. 표준 입출력Scanner (간단한 입력)Scanner scanner = new Scanner(System.in);String str = scanner.next(); // 문자열int..
1. 단순케이스 (Normal Case)가장 기본적인 입력을 넣어 프로그램이 제대로 동작하는지 확인.2. 히든케이스 (Hidden Case)공개되지 않은 테스트케이스로, 보통 경계값이나 엣지케이스, 특수상황을 포함.3. 최대케이스 (Max Case)문제 조건에서 가능한 가장 큰 입력을 넣어 시간초과를 확인하는 테스트.4. 경계값 테스트 (Boundary Value Test)입력 범위의 최소값과 최대값을 테스트하는 기법.예: 1 ≤ 배열 길이 ≤ 100 일 때, 배열 길이 1개와 100개 테스트.5. 엣지케이스 (Edge Case)극단적이거나 예상치 못한 입력을 넣어 코드의 취약점을 확인하는 케이스.예: 빈 배열, 음수, 특수문자 등.6. 예외케이스 (Exception Case)잘못된 입력이나 특이한 상황..
문제https://www.acmicpc.net/problem/18870풀이방법중복이 없어야해서 Set을 썼는데 정렬이 필요했다...그래서 이전에 스터디할 떄 정리한 TreeSet을 사용하였다그리고 set의 인덱스를 접근하려했는데 해당 시간복잡도가 높아서 시간초과가 났다해쉬맵을 사용하면 N(1)이 가능..풀이import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.par..
문제https://www.acmicpc.net/problem/17298풀이방법i = 0 (탑 높이 6) 스택: 비어있음 → answer[0] = 0 0번 인덱스 push (스택: [0])i = 1 (탑 높이 9) 스택 top(0번, 6) i = 2 (탑 높이 5) 스택 top(1번, 9) > 5 → answer[2] = 2 (1번 인덱스 + 1) 2번 인덱스 push (스택: [1, 2])i = 3 (탑 높이 7) 스택 top(2번, 5) 7 → answer[3] = 2 (1번 인덱스 + 1) 3번 인덱스 push (스택: [1, 3])i = 4 (탑 높이 4)스택 top(3번, 7) > 4 → answer[4] = 4 (3번 인덱스 + 1) 4번 인덱스 push (스택: [1, 3, 4])풀이impo..
문제https://www.acmicpc.net/problem/1697풀이방법1차원 bfs는 dx, dy를 미리 지정하지 못하니까 값이 바뀔 때 동적으로 계산할 수 있도록 !풀이import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { final int MAX_VALUE = 100001; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine());..
문제https://www.acmicpc.net/problem/28018풀이방법그냥 배열 돌려가면서 다 더해주기했는데 시간 초과남time[S] += 1 time[E+1] -=1time 배열에 대한 누적합 적용 --> 각 시각에 사용중인 좌석time[1] += 1 time[6] += -1time[3] += 1 time[7] += -1차분배열시간: 0 1 2 3 4 5 6 7변화량: 0 1 0 1 0 0 -1 -1누적합좌석 수: 0 1 1 2 2 2 1 0풀이import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader b..
문제https://www.acmicpc.net/problem/1967풀이방법트리의 정의에 따라 한번 갈라지면 다시 만날 수 없음트리의 지름은 임의의 노드에서 시작해서, 가장 먼 노드의 위치를 찾고그 노드에서 가장 먼 노드까지의 거리를 찾으면됨풀이import java.io.*;import java.util.*;public class Main { static int maxDist = 0; static int farNode = 0; public static void dfs(List> tree, boolean[] visited, int node, int dist ) { visited[node] = true; if (dist> maxDist) { max..
문제https://www.acmicpc.net/problem/2579풀이방법마지막은 무조건 밟아야 하므로N-2 계단이면 dp[i-2] + score[i]N-1 계단이면 dp[i-3]+dp[i-1]+score[i]위에서 dp[i-3]을 dp[i-2]로 하면 연속 세계단이라 안됨점화식은 dp[i] = max(dp[i-2] + score[i], dp[i-3] + score[i-1] + score[i])풀이import java.util.*;import java.io.*;public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new Input..