CodingBat배열활용 문제!!
1. firstLast6
주어진 정수형으로 이루어진 배열에서 첫번째 배열에서 혹은 마지막배열에서 요소가 6이 나오면 true를 반환하라. 배열 길이는 1이상이다.
public boolean firstLast6(int[] nums) {
return nums[0] == 6 || nums[nums.length -1] == 6;
}
2. sameFirstLast
주어진 정수형 배열의 길이가 1이상이고, 첫번째 요소와 마지막 요소가 같다면 true를 반환해라.
public boolean sameFirstLast(int[] nums) {
return nums.length > 0 && (nums[0] == nums[nums.length -1]);
}
3. makePi
{3,1,4} 세가지 숫자를 포함하는 길이가 3인 정수형 배열을 반환해라.
public int[] makePi() {
int[] arr = new int[3];
arr[0] = 3;
arr[1] = 1;
arr[2] = 4;
return arr;
}
4. commonEnd
두 정수형 배열 a,b가 주어진다. 두개의 배열의 첫번째 요소 혹은 마지막 요소가 같은 값을 가지고 있다면 true를 반환해라. 2개의 배열의 길이는 모두 1이상이다.
public boolean commonEnd(int[] a, int[] b) {
if(a.length > 0 && b.length > 0){
if((a[0] == b[0]) || (a[a.length-1] == b[b.length-1])){
return true;
}
}
return false;
}
5. sum3
길이가 3인 배열에서 모든 요소들의 합을 반환해라.
public int sum3(int[] nums) {
int sum = 0;
for(int i = 0; i <nums.length; i++){
sum += nums[i];
}
return sum;
}
6. rotateLeft3
길이가 3인 배열에서, 모든 배열의 요소들을 왼쪽으로 옮기고, 첫번째 요소는 배열의 마지막으로 이동시킨 배열을 반환해라.
public int[] rotateLeft3(int[] nums) {
int num = nums[nums.length-1];
nums[nums.length-1] = nums[0];
for(int i = 1; i < nums.length-1; i++){
nums[i-1] = nums[i];
}
nums[nums.length-2] = num;
return nums;
}
7. reverse3
주어진 길이가 3인배열을 뒤집어서(reverse) 새로운 배열로 출력해라.
public int[] reverse3(int[] nums) {
int num = nums[nums.length-1];
nums[nums.length-1] = nums[0];
nums[0] = num;
return nums;
}
8. maxEnd3
길이가 3인 배열에서, 첫번째 요소와 마지막 배열 요소중 더 큰 값으로 배열을 바꿔서(채워서) 반환해라.
public int[] maxEnd3(int[] nums) {
if(nums[0]> nums[nums.length-1]){
for(int i = 1; i< nums.length; i++){
nums[i] = nums[0];
}
}else{
for(int i = 0; i< nums.length-1; i++){
nums[i] = nums[nums.length-1];
}
}
return nums;
9. sum2
주어진 정수형 배열에서 첫번째와 두번째 요소의 합을 출력해라. 만약 배열의 길이가 2보다 작다면 배열에 존재하는 요소 값을 출력하고, 만약 배열에 요소가 존재하지 않는다면 0을 출력해라.
public int sum2(int[] nums) {
int result;
if(nums.length > 1){
result = nums[0] + nums[1];
}else if(nums.length == 1){
result = nums[0];
}else{
result = 0;
}
return result;
}
10. middleWay
각각의 배열길이가 3인 정수형 배열 a와 b의 중간에 있는 값으로 이루어진 길이가 2인 배열을 출력해라.
public int[] middleWay(int[] a, int[] b) {
int[] arr = new int[2];
arr[0] = a[1];
arr[1] = b[1];
return arr;
}
11. makeEnds
배열의 길이가 1이상인 정수형 배열의 첫번째 값과 마지막값으로 이루어진 길이가 2인 새로운 배열을 반환해라.
public int[] makeEnds(int[] nums) {
int[] arr = new int[2];
if(nums.length > 0){
arr[0] = nums[0];
arr[1] = nums[nums.length-1];
}
return arr;
}
12. has23
길이가 2인 배열의 요소가 2 혹은 3을 포함하고 있다면 true를 반환해라.
바로 리턴하는 방식과, 반복문과 조건문을 이용한 방식 두가지로 풀어봄.
public boolean has23(int[] nums) {
return nums[0] == 2 || nums[0] == 3 || nums[1] == 2 || nums[1] == 3;
}
public boolean has23(int[] nums) {
for(int i = 0; i < nums.length; i++){
if(nums[i] == 2 || nums[i] == 3){
return true;
}
}
return false;
}
13. no23
길이가 2인 배열이 2혹은 3을 포함하고 있지 않다면 true를 반환해라.
12번 문제와 마찬가지로 바로 리턴하는 방식과, 반복문과 조건문을 이용한 방식 두가지로 풀어봄.
public boolean no23(int[] nums) {
return nums[0] != 2 && nums[0] != 3 && nums[1] != 2 && nums[1] != 3;
}
public boolean no23(int[] nums) {
for(int i = 0; i< nums.length; i++){
if(nums[i] == 2 || nums[i] == 3){
return false;
}
}
return true;
}
14. makeLast
주어진 정수형 배열길이의 2배의 길이이고, 마지막요소가 주어진 정수형 배열의 마지막 요소와 같은 새로운 배열을 출력해라. 마지막 요소외 나머지 요소들은 0으로 채워짐. (주어진 정수형 배열은 1이상)
public int[] makeLast(int[] nums) {
int[] arr = new int[nums.length*2];
for(int i = 0; i < arr.length-1; i++){
arr[i] = 0;
}
arr[arr.length-1] = nums[nums.length-1];
return arr;
}
15. double23
주어진 배열에서 2가 두번 혹은 3이 2번 포함되어 있다면 true를 반환해라. 주어진 배열의 길이는 0,1,2중 하나.
public boolean double23(int[] nums) {
return (nums.length == 2) && ((nums[0] == 2 && nums[1] ==2) || (nums[0] == 3 && nums[1] == 3));
}
16. fix23
길이가 3인 배열이 주어짐. 만약 배열에 2가 나오고 바로 3이 나온다면, 원래 배열의 3 요소를 0으로 바꿔서 배열을 출력해라.
public int[] fix23(int[] nums) {
for(int i = 0; i < nums.length-1; i++){
if(nums[i] == 2 & nums[i+1] == 3){
nums[i+1] = 0;
}
}
return nums;
}
17. start1
2개의 정수형 a,b 배열이 있다. 배열의 요소가 1로 시작하는 배열이 얼마나 있는지 반환해라.
public int start1(int[] a, int[] b) {
int result = 0;
if(a.length > 0 && a[0] == 1){
result ++;
}
if(b.length > 0 && b[0] == 1){
result ++;
}
return result;
}
18. biggerTwo
각각의 배열의 길이가 2인 a,b배열이 있다. 각각 배열의 요소들의 모든 값의 합을 고려해, 합이 더 큰 배열을 반환해라.
만약 두 배열의 요소들의 합이 같다면 a배열을 반환해라.
public int[] biggerTwo(int[] a, int[] b) {
if((a[0] + a[1]) < (b[0] + b[1])){
return b;
}
return a;
}
19. makeMiddle
주어진 정수형 배열의 중간 2개의 요소로 이루어진, 길이가 2인 새로운 정수형 배열을 출력해라. 주어지는 배열의 길이는 2이상일 것이다.
public int[] makeMiddle(int[] nums) {
int[] arr = new int[2];
arr[0] = nums[nums.length/2 -1];
arr[1] = nums[nums.length/2];
return arr;
}
20. plusTwo
각각의 길이가 2인 2개의 배열이 주어진다. 2개의 모든 요소로 이루어진 길이가 4인 새로운 배열을 출력해라.
public int[] plusTwo(int[] a, int[] b) {
int[] arr = new int[a.length + b.length];
for(int i = 0; i < arr.length/2; i++){
arr[i] = a[i];
}
for(int i = arr.length/2; i < arr.length; i++){
arr[i] = b[i-2];
}
return arr;
}
21. swapEnds
주어진 정수형 배열에서 첫번째요소와 마지막 요소의 위치를 바꾼 배열을 출력해라. 배열의 길이는 적어도 1일것이다.
public int[] swapEnds(int[] nums) {
int n = nums[0];
nums[0] = nums[nums.length-1];
nums[nums.length-1] = n;
return nums;
}
22. midThree
길이가 홀수인 배열이 주어진다. 주어진 배열의 중간값들로 이루어진 길이가 3인 새로운 배열을 출력해라. 주어진 배열의 길이는 적어도 3일것이다.
public int[] midThree(int[] nums) {
int[] arr = new int[3];
for(int i = 0; i < arr.length; i++){
arr[i] = nums[nums.length/2 - 1 + i];
}
return arr;
}
23. maxTriple
홀수 길이 배열에서, 맨앞, 중간, 마지막 배열 요소중 가장 큰 값을 반환해라. 배열의 길이는 적어도 1이다.
public int maxTriple(int[] nums) {
int max = 0;
if(nums[0] > nums[nums.length/2]){
max = nums[0];
}else{
max = nums[nums.length/2];
}
if(nums[nums.length-1] > max){
max = nums[nums.length-1];
}
return max;
}
24. frontPiece
주어진 배열의 첫번째와 두번째 요소로 이루어진 새로운 배열을 반환해라. 만약 주어진 배열의 길이가 2보다 작다면, 존재하는 요소 무엇이든 반환해라.
public int[] frontPiece(int[] nums) {
int[] arr = new int[2];
if(nums.length > 1){
arr[0] = nums[0];
arr[1] = nums[1];
} else{
return nums;
}
return arr;
}
25. unlucky1
우리는 배열에서 1다음 바로 3요소가 나오면 "unlucky"라고 말한다. 만약 배열의 첫번째 두번째 혹은 마지막 2번째 요소에서 "unlucky"를 포함한다면 true를 반환해라.
public boolean unlucky1(int[] nums) {
if(nums.length > 1){
for(int i = 0; i < 2; i++){
if((nums[i] == 1) && (nums[i+1] == 3)){
return true;
}
}
if((nums[nums.length-2] == 1) && (nums[nums.length-1] == 3)){
return true;
}
}
return false;
}
26. make2
정수형 배열 a와 b가 주어졌을때, a요소 다음 b의 요소를 포함하는 길이가 2인 새로운 배열을 반환해라. 배열은 0을 포함한 임의의 길이일 수 있지만. 두배열 사이에 2개 이상 요소를 사용할 수 있음.
public int[] make2(int[] a, int[] b) {
int[] arr = new int[2];
if(a.length > 0){
arr[0] = a[0];
arr[1] = (a.length > 1) ? a[1] : b[0];
}else{
arr[0] = b[0];
arr[1] = b[1];
}
return arr;
}
27. front11
두개의 정수형 배열 a와 b가 주어질때, 각각의 배열의 첫번째 요소로 이루어진 새로운 배열을 반환해라. 만약 둘중 하나의 배열의 길이가 0일때, 그 배열은 무시해라.
public int[] front11(int[] a, int[] b) {
int[] arr = {};
if(a.length > 0){
if(b.length > 0){
arr = new int[2];
arr[0] = a[0];
arr[1] = b[0];
}else{
arr = new int[1];
arr[0] = a[0];
}
}else{
if(b.length > 0){
arr = new int[1];
arr[0] = b[0];
}
}
return arr;
}
'Algorithm > CODINGBAT[Java]' 카테고리의 다른 글
CodingBat Map-2 (0) | 2021.09.28 |
---|---|
CodingBat Map-1 (0) | 2021.09.28 |
CodingBat String-1 (0) | 2021.09.27 |
CodingBat Warmup-2 (0) | 2021.09.27 |
CodingBat Warmup-1 (0) | 2021.09.27 |