안녕하세요 오늘은 자바 코딩 테스트 문제를 풀어보며 연습해보겠습니다.
문제 1: 배열 회전
다음과 같은 문제를 해결해 보세요.
정수형 배열이 주어졌을 때, 이 배열을 오른쪽으로 N번 회전시키는 메서드를 작성하십시오. 예를 들어, [1,2,3,4,5]의 배열이 있고 N=2라면 출력은 [4,5,1,2,3]이 되어야 합니다.
문제 2: 팔린드롬 체크
주어진 문자열이 팔린드롬인지 확인하는 함수를 작성하세요. 팔린드롬은 앞으로 읽으나 뒤로 읽으나 동일한 문자열을 의미합니다. 대소문자는 구분하지 않으며 공백도 무시합니다.
문제 3: 피보나치 수열
재귀함수를 사용하여 n번째 피보나치 수열의 값을 반환하는 함수를 작성하세요.
피보나치 수열은 다음과 같습니다: 0 (0번째), 1 (1번째), 1 = 0 + 1 (2번째), 2 = 1 + 1 (3번째), ...
문제 4: 이진 트리 깊이
주어진 이진 트리의 최대 깊이를 찾는 함수를 작성하세요. 여기서 이진 트리의 최대 깊이는 루트 노드에서 가장 멀리 떨어져 있는 잎 노드까지의 가장 긴 경로입니다. 경로에는 반드시 새로운 자식 노드가 있어야 합니다.
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
public int maxDepth(TreeNode root) {
// 여기에 코드를 작성하세요.
}
문제 5: 숫자 문자열과 영단어
숫자의 일부를 영단어로 바꿔서 주어지는 문자열 s가 있습니다. s가 의미하는 원래 숫자를 반환하도록 solution 함수를 완성해주세요.
예시:
- "one4seveneight" -> 1478
- "23four5six7" -> 234567
- "2three45sixseven" -> 234567
문제 6: 짝수와 홀수
정수 num이 주어졌을 때, num은 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"을 반환하는 함수 solution을 완성해주세요.
답안 :
1.
public int[] rotateArray(int[] array, int n) {
int length = array.length;
int[] rotatedArray = new int[length];
for (int i = 0; i < length; i++) {
rotatedArray[(i + n) % length] = array[i];
}
return rotatedArray;
}
2.
public boolean isPalindrome(String str) {
String processedStr = str.toLowerCase().replaceAll("\\s", "");
int leftIndex = 0;
int rightIndex = processedStr.length() - 1;
while (leftIndex < rightIndex) {
if (processedStr.charAt(leftIndex) != processedStr.charAt(rightIndex)) {
return false;
}
leftIndex++;
rightIndex--;
}
return true;
}
3.
public int fibonacci(int n) {
if(n <= 1){
return n;
} else{
return fibonacci(n-1) + fibonacci(n-2);
}
}
4.
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
} else {
int leftDepth = maxDepth(root.left);
int rightDepth = maxDepth(root.right);
return Math.max(leftDepth, rightDepth) + 1;
}
}
5.
public int solution(String s) {
String[] words = {"zero", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine"};
for (int i = 0; i < words.length; i++) {
s = s.replaceAll(words[i], Integer.toString(i));
}
return Integer.parseInt(s);
}
6.
public String solution(int num) {
if (num % 2 == 0) {
return "Even";
} else {
return "Odd";
}
}
댓글