코딩 테스트
-
다이나믹 프로그래밍코딩 테스트/알고리즘 정리 2023. 7. 6. 02:17
1. 다이나믹 프로그래밍 개념 Dynamic Programming 동적 계획법 하나의 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것 특정한 알고리즘이 아닌 하나의 문제 해결 패러다임 🕊️ DP를 사용하기 위한 조건 2가지 1) Overlapping Subproblems (겹치는 부분 문제) 2) Optimal Substructure (최적 부분 구조) 💁♂️ Overlapping Subproblems DP는 기본적으로 문제를 나누고 그 문제의 결과 값을 재활용해서 전체 답을 구한다. 그래서 동일한 작은 문제들이 반복하여 나타나는 경우에 사용이 가능하다. 👉 ex) 피보나치 수열 💁♂️ Optimal Substructure 부분 문제의 최적 결과 값을..
-
Do it! 알고리즘 코딩 테스트 - 자바 편코딩 테스트 2023. 1. 20. 16:01
01-1 시간 복잡도 표기법 알아보기 02-2 디버깅 활용 사례 살펴보기 코딩 테스트에서 실수하기 쉬운 4가지 오류 1. 변수 초기화 오류 2. 반복문에서 인덱스 범위 지정 오류 찾아보기 3. 잘못된 변수 사용 오류 찾아보기 4. 자료형 범위 오류 찾아보기 int형의 범위: -2147483648 ~ 2147483647 long형의 범위: -9223372036854775808 ~ 9223372036854775807 👉 자료형은 처음부터 long형으로 선언! 03-1 배열과 리스트 배열 인덱스를 사용하여 값에 바로 접근 가능 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정 필요 배열의 크기는 선언할 때 지정할 수 있으며, 한 번 선언하면 크기를 늘리거나 줄일 수 없음 구조가 간단하므..
-
[백준] 1929번 소수 구하기코딩 테스트 2023. 1. 19. 13:21
문제: M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력: 첫째 줄에 자연수 M과 N이 빈칸을 사이에 두고 주어진다. M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력: 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 음 이 문제는 저번주에 풀었던 1979번이랑 비슷한 문제 같다! 그럼 이번에도 sqrt를 사용해야겠다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class B1929 { //소수 구하기 public static void main(String[] args) thr..
-
[백준] 2675번 문자열 반복 - 브론즈 2코딩 테스트 2023. 1. 17. 19:26
입력 테스트 케이스 수 (테스트 케이스 수 만큼의) 반복 횟수, 문자열 출력 테스트 결과 문자열 문제! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class B2675 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); //테스트 케이스 수 int[] re = new int[num]; String[][] a..
-
배열 형변환 (Stream)코딩 테스트 2023. 1. 17. 16:41
백준 문제를 풀다가 String[] 을 Integer[]로 형변환하는게 많이 필요했다. 그런데 형변환을 할 때마다 for 문을 쓰면 코드가 너무 더러워 보여서 아래와 같은 방법을 썼다. public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); List list = new ArrayList(); for (int i = 0; i < num; i++) { String s = br.readLine(); String[] tmp = s.split(" "); /..
-
[백준] 2563번 색종이 - 실버5코딩 테스트 2023. 1. 17. 14:13
🦴 정사각형 (색종이) 가로: 10, 세로: 10 🦴 색종이의 변과 도화지의 변이 평행하도록 붙임 🦴 색종이가 붙은 검은 영역의 넓이를 구하기 📌 입력 색종이의 수가 주어짐 한 줄에 하나씩 색종이를 붙인 위치가 주어짐 색종이를 붙인 위치는 두 개의 자연수로 주어짐 첫 번째 자연수: 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리 두 번째 자연수: 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리 색종이의 수: 100 이하 색종이가 도화지 밖으로 나가는 경우는 없음 📌 출력 첫째 줄에 색종이가 붙은 검은 영역의 넓이 출력 흠 .. 이걸 어떻게 풀지? 그리디?는 아닌거 같음 겹치는 부분 넓이를 구해야 하는뎅.. 겹치는 부분이 있는 경우 가로: (왼쪽에서 더 가까운 색종이의 위치 + 10) - (왼쪽에서..
-
[백준] 1978번 소수 찾기 - 실버 5코딩 테스트 2023. 1. 14. 23:04
뭐가 잘못된걸까..? import java.util.Scanner; public class B1978 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int num = s.nextInt(), res = 0; int[] arrayN = new int[num]; for (int i = 0; i < num; i++) { arrayN[i] = s.nextInt(); } System.out.println(prime(arrayN)); } static int prime(int[] arrayN) { int res = arrayN.length; for (int n : arrayN) { if (n == 1) { res--; bre..