코딩 테스트
-
[백준] 26093 고양이 목에 리본 달기 (DP)코딩 테스트 2024. 6. 26. 19:18
https://www.acmicpc.net/problem/26093 제목외로운 윤제는 고양이를 키우기로 했다. 𝑁 마리의 고양이를 입양하기로 한 윤제는 고양이들에게 리본을 달아주기 위해 𝐾 종류의 리본을 충분히 준비했다. 즉, 각 리본의 개수는 무한하다. 각 고양이마다 리본의 종류에 따라 좋아하는 정도가 다르고, 이를 만족도로 나타낼 수 있다. 고양이들을 번호순으로 한 줄로 세우고 리본을 달아주려고 하는데, 각 고양이는 자신과 이웃한(왼쪽 혹은 오른쪽) 고양이와 같은 종류의 리본을 다는 것을 굉장히 싫어한다. 윤제는 고양이들이 싫어하는 상황을 피하면서 각 고양이의 리본에 대한 만족도의 총합을 극대화하고 싶다. 이 조건을 만족하는 만족도 합의 최댓값을 윤제에게 알려주자. 입력첫 번째 줄에는 고양이의 수 𝑁..
-
[백준 2343번] 기타레슨코딩 테스트 2024. 1. 3. 17:42
get get get get a guitar 🎶 이진탐색 문제이다. 사실 실제 코딩테스트를 칠 때 이런 문제가 나오면 이진 탐색을 떠올릴 수 있을지 모르겠다.. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class B2343 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new S..
-
[백준] 1958번 : LCS 3코딩 테스트 2023. 7. 25. 09:27
LCS 문제들을 차례대로 풀고있는데 이 문제 완전 뒷통수 제대로 맞... 그냥 내가 못해서 그런거긴 한데 암튼 그래서 포스팅한다.. 처음에는 물론 3차원 배열을 생각하기는 했다. 그런데 3차원을 .... 어떻게? 라는 생각에 에이~ 아니겠지~ 하고 첫 문자열 & 두번째 문자열 의 lcs 를 구해서 도출된 문자열과 세 번째 문자열의 LCS를 이용해서 최종 답을 도출하도록 구했다. 짜잔 ...~ package baekJoon.gold; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class B1958 { public static void main(String[] args) t..
-
다이나믹 프로그래밍코딩 테스트/알고리즘 정리 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(" "); /..