본문 바로가기
Algorithm/CODINGBAT[Java]

CodinBat Array-1

by 씨니 2021. 10. 4.
728x90

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;
}
728x90

'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