자바
-
[코드트리 챌린지] 세 수의 최대 곱(S3)코딩테스트/코드트리_Java 2023. 10. 2. 18:08
문제 : 가장 짧은 부분합 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제는 아래와 같다 원소가 n개 들어 있는 수열에서 특정 구간을 잡았을 때 그 합이 s 이상이 되는 것 중, 가장 짧은 구간의 길이를 구하는 프로그램을 작성해보세요. 첫 번째 줄에 n과 s가 공백을 두고 주어집니다. 두 번째 줄에 수열의 각 원소가 공백을 두고 차례대로 주어집니다. 1 ≤ n ≤ 100,000 1 ≤ s ≤ 109 1 ≤ 원소 값 ≤ 10,000 실력 진단에서 틀린 문제이고 처음 투 포인터를 생각하긴 했지만, 원소 값이 10,000이길래 n^2으로도 풀리리라 생..
-
[코드트리 챌린지] 두 수의 합코딩테스트/코드트리_Java 2023. 9. 25. 23:52
문제 : 두 수의 합 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 코드트리 기준 IM 난이도의 문제이다. 원소의 개수 n과 두 수의 합이 될 k가 공백을 사이에 두고 주어지고, 두 번째 줄에는 n개의 정수가 공백을 사이에 두고 주어집니다. 수가 중복되어 주어질 수 있으며 입력으로 주어진 수들 중 서로 다른 위치에 있는 두 개의 수를 골랐을 때 두 수의 합이 k가 되는 가짓수를 출력하면 되는 문제이다. 사실 이 문제를 실력 진단에서 두 번 만났는데, 아쉽게도 이번에도 풀지 못하고 따로 풀어보려고 했지만 결국 해설을 찾아보고 풀었다. 아이디어 자체는 ..
-
[코드트리 챌린지] 정수 사각형 최대 합코딩테스트/코드트리_Java 2023. 9. 16. 22:03
문제 : 정수 사각형 최대 합 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제 N×N 행렬이 주어졌을 때, (1,1)에서 시작하여 오른쪽 혹은 밑으로만 이동하여 (N,N)으로 간다고 했을 때 거쳐간 위치에 적혀있는 숫자의 합을 최대로 하는 프로그램을 작성해보세요.3 ≤ n ≤ 100,000 -1,000 ≤ 주어지는 수 ≤ 1,000 사실 실력진단에서 유사한 문제가 나왔는데 DFS 방식으로 풀려다가 시간이 부족했고, 이 문제는 BFS 방식으로 풀었다. 풀이는 아래와 같다. 1. DP테이블에 초기 좌표 0, 0에는 입력된 0,0의 값을 넣어준다. 2..
-
[코드트리 챌린지] 세 수의 최대 곱(S3)코딩테스트/코드트리_Java 2023. 9. 7. 22:59
Q. 세 수의 최대 곱 코드트리의 난이도와 백준의 난이도는 기준이 다르지만, 실버 3 난이도의 문제이다. 정수 n과 n개의 수가 주어졌을 때, 3개의 숫자를 적절하게 골라 나올 수 있는 곱 중 최대값을 구하는 프로그램을 작성하는 문제이고, n의 범위와 주어지는 수의 범위는 아래와 같다. 3 ≤ n ≤ 100,000 -1,000 ≤ 주어지는 수 ≤ 1,000 첫 번째 줄에 3개의 숫자를 적절하게 골라 나올 수 있는 곱 중 최대값을 출력하면 된다. 풀이는 아래와 같다. 1. 음수와 양수를 다른 리스트에 저장한다. 2. 이 음수와 양수들을 각각 정렬한다 (이때 양수는 오름차순으로 정렬되므로 -를 붙이면 내림차순으로 정렬하는 효과가 있다) 3. 최대값이 나올 수 있는 각각의 케이스를 골라 계산한다 3 - 1. ..
-
Q. 13428. 숫자 조작(D3)코딩테스트/SWEA_Java 2023. 5. 18. 23:40
Q. 13428. 숫자 조작(D3) 0. 문제 D3 난이도의 문제이고, 조합을 이용한 구현 문제라고 생각된다. 9자리 이하의 음이 아닌 정수 N이 주어지고, 두 숫자의 위치를 바꿀 수 있다면 최대값과 최소값을 출력하는 문제이다. 주의해야 할 점은 시작하는 수가 0이 되서는 안된다는 점 이다 1. 풀이 그냥 조합을 이용해서 풀면 되는 문제인데 어렵게 돌아가려다 삽질을 많이 했다. 먼저 삽질하고 틀린 풀이는 아래와 같다. 1) 최대값, 최소값을 재귀적으로 찾는다 2) 만약 현재 위치의 현재 값이 최소or최대값인 경우 다음 인덱스를 변수로 다시 위 함수를 호출한다. 틀린 풀이이다. import java.io.BufferedReader; import java.io.FileInputStream; import ja..
-
Q. 1215. 회문(D3)코딩테스트/SWEA_Java 2023. 5. 11. 16:25
Q. 1215. 회문(D3) 0. 문제 D3 난이도의 문제이고, 격자형 그래프를 활용한 구현 문제라고 생각된다. N이 주어지고 문자가 적혀있는 격자형 그래프가 주어진다. 격자형 그래프의 가로 / 세로 N개의 문자열을 뽑았을 때 똑바로/거꾸로 읽어도 똑같은 단어의 경우의 수를 구하는 문제이다. 1. 풀이 1) 격자형 그래프를 두 개 저장하는데, 하나는 그대로 나머지는 90도 돌린 방향으로 저장한다. (가로 / 세로 모두를 고려 해야 하므로) 2) 나올 수 있는 모든 문자열에 대해 회문 문자인지 판별한다. (만약 N이 홀수인 경우 ex.4 모든 문자를 비교해야 하지만, 5인 경우 1 2번째와 4 5번째 문자만 비교하면 된다.) import java.io.BufferedReader; import java.io..
-
Q. 1225. 암호생성기(D3)코딩테스트/SWEA_Java 2023. 5. 9. 21:07
Q. 1225. 암호생성기(D3) 0. 문제 D3 난이도의 문제이고, Queue를 사용한 구현 문제라고 생각된다. 숫자가 8개 주어지고 맨 앞의 숫자에 1을 빼고 맨 앞의 숫자를 맨 뒤로 보낸다. 이후 다음 숫자는 2를 빼고 맨 뒤로 보낸다. 빼는데 사용하는 숫자를 n이라고 했을 때 n이 5를 넘어서면 n은 1이 된다. 입력에 주어진 8개의 수 중 하나라도 0이 되면 루프를 종료하고, 결과를 출력하는 문제이다. 1. 풀이 1) 입력값을 받은 뒤에 큐에 저장한다. 2) 일일히 값을 빼가며 문제의 로직대로 수행한다. import java.util.Arrays; import java.util.Deque; import java.util.LinkedList; import java.util.StringTokeniz..
-
Q 1859. 백만 장자 프로젝트(D2)코딩테스트/SWEA_Java 2023. 5. 8. 23:35
Q 1859. 백만 장자 프로젝트(D2) 0. 문제 D2 난이도의 문제이고, 단순한 배열 순회 문제라고 생각된다. 매일 매일 물건의 가격이 주어진다. 하루에 물건은 하나만 살 수 있고, 파는 수량은 제한이 없다.이 때 최대 이익을 출력하는 문제이다. 1. 풀이 처음에 투 포인터나 정렬을 이용한 문제인가? 라는 생각을 했었는데, 단순하게 생각을 뒤집어서 맨 뒤에서 앞으로 배열을 조회하면 해결할 수 있었다. 1) 배열의 맨 뒤에서 앞으로 순회한다. 1-1) 이 때 만약 기존 최대 가격보다 큰 가격을 만날 경우 그 값을 저장한다. 1-2) 그렇지 않은 경우 기존 최대 가격 - 현재 가격을 결과값에 저장한다. import java.util.Scanner; import java.util.StringTokenize..