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

CodingBat Warmup-2

by 씨니 2021. 9. 27.
728x90

CodingBat 두번째 기초문제!

 

1. stringTimes

주어진 한문자열과 0이상의 정수형 n을 입력받아, 입력받은 문자열을 n만큼 반복해서 출력해라.

public String stringTimes(String str, int n) {
  String s = "";
  for(int i = 0; i < n; i++){
    s += str;
  }
  return s;
}

 

2. frontTimes

주어진 문자열과 0이상의 정수형n을 입력받아, 주어진 문자열의 처음 3개 문자들을 n번 반복해 출력해라.

만약 주어진 문자열이 3보다 작다면, 그냥 그 문자열을 3번 반복해 출력해라.

public String frontTimes(String str, int n) {
  String s = "";
  if(str.length() > 2){
    for(int i = 0; i < n; i++){
      s += str.substring(0,3);
    }
  }
  if(str.length() <= 2){
    for(int i = 0; i < n; i++){
      s += str;
    }
  }
  return s;
}

 

3. countXX

입력받은 문자열에 나타나는 "xx"의 문자열 수를 출력해라. ex) "xxx"는 2 개의  "xx"가 나타남

int countXX(String str) {
  int count = 0;
  for(int i = 0; i < str.length()-1; i++){
    if(str.substring(i,i+2).equals("xx")){
      count ++;
    }
  }
  return count;
}

 

4. doubleX

주어진 문자열에서 'x'문자 다음 바로 'x'문자가 나온다면 true를 반환해라.

Pattern.matches방법과 일반코드 방법

boolean doubleX(String str) {
  // return java.util.regex.Pattern.matches("[^x]*?xx.*?",str);
}
boolean doubleX(String str) {
  for(int i = 0; i < str.length()-1; i++){
    if((str.charAt(i) == 'x'))
      if((str.charAt(i+1) == 'x')){
        return true;
      }else{
      return false;
      }
    }
  return false;
}

 

5. stringBits

주어진 문자열을 인덱스 0부터 2간격으로 출력해라.

public String stringBits(String str) {
  String s = "";
  for(int i = 0; i < str.length(); i+=2){
    s += str.charAt(i);
  }
  return s;
}

 

6. stringSplosion

주어진 문자열을 다음과 같이 출력해라.

주어진 문자열 : "Code" -> "CCoCodCode" ==인덱스 하나씩 증가하며 출력

public String stringSplosion(String str) {
  String s = "";
  for(int i = 0; i <= str.length();  i++){
    s += str.substring(0,i);
  }
  return s;
}

 

7. last2

주어진 문자열에서 마지막 2번째 문자들과 같은 문자들을 마지막 2개의 문자들을 제외하고 세어서 출력해라.

public int last2(String str) {
  int count = 0;
  for(int i = 0; i < str.length()-2; i++){
    if(str.substring(i,i+2).equals(str.substring(str.length()-2))){
      count++;
    }
  }
  return count;
}

 

8. arrayCount9

정수형 배열이 주어지면, 그 정수형 배열내 9의 개수를 세어 출력해라.

public int arrayCount9(int[] nums) {
  int count = 0;
  for(int i = 0; i < nums.length; i++){
    if(nums[i] == 9){
      count++;
    }
  }
  return count;
}

 

9. arrayFront9

정수형 배열이 주어지면 앞 4개의 요소들중 9가 있으면 true를반환해라. 배열의 길이는 4보다 적지않을 것이다.

public boolean arrayFront9(int[] nums) {
  if(nums.length > 4){
    for(int i = 0; i < 4; i++){
      if(nums[i] == 9){
        return true;
      }
    }
  }else{
    for(int i = 0; i <nums.length; i++){
      if(nums[i] == 9){
        return true;
      }
    }
  }
  return false;
}

⬆ 내가 푼 방식

public boolean arrayFront9(int[] nums) {
  int l = nums.length;
  if(l > 4){
    l = 4; 
  }
  for(int i = 0; i < l; i++){
      if(nums[i] == 9){
        return true;
      }
    }
  return false;
}

⬆솔루션 방식

 

10. array123

주어진 정수형 배열에서 1,2,3순서가 나타난다면 true를 반환해라

public boolean array123(int[] nums) {
  for(int i = 0 ; i < nums.length-2; i++){
    if(nums[i] == 1 && nums[i+1] == 2 && nums[i+2] ==3){
      return true;
    }
  }
  return false;
}

 

11. stringMatch

주어진 두개의 a,b 문자열에서 a와 b문자열이 같은 문자열이 나온다면 그 수를 세서 출력해라.

ex)a : "xxcaazz" "xxbaaz"를 비교하면 "xx", "aa", "az"가 같아 3이 출력됨.

public int stringMatch(String a, String b) {
  int count = 0;
  int al = a.length();
  int bl = b.length();
  if(al > bl){
    int temp = al;
    al = bl;
    bl = temp;
  }
  for(int i = 0; i < al-1; i++){
    if(a.substring(i,i+2).equals(b.substring(i,i+2))){
      count++;
    }
  }
  return count;
}

 

12. stringX

주어진 문자열에서 'x'가 나타난다면 문자열 맨앞과 맨뒤를 제외한 x를 전부 제거해 문자를 출력해라.

public String stringX(String str) {
  String s = "";
  if(str.length() > 1 && (str.charAt(0) == 'x') && (str.charAt(str.length()-1) == 'x')){
    s += str.charAt(0);
    for(int i = 1; i < str.length()-1; i++){
      if(str.charAt(i) != 'x'){
        s += str.charAt(i);
      }
    }
    s += str.charAt(str.length()-1);
  }else{
    for(int i = 0; i < str.length(); i++){
      if(str.charAt(i) != 'x'){
        s += str.charAt(i);
      }
    }
  }
  if(str.length() < 2){
    s = str;
  }
  return s;
}

⬆내가푼것,, 너무 길고 복잡,,

public String stringX(String str) {
  String s = "";
  for(int i = 0; i < str.length(); i++){
    if(!(i > 0 && i < (str.length() - 1) && str.substring(i,i+1).equals("x"))){
      s += str.substring(i, i+1);
    }
  }
  return s;
}

⬆ 솔루션 방법,,! 이렇게 간단한걸!

 

13. altPairs

주어진 문자열을 인덱스 0,1,4,5,8,9 ...규칙으로 출력해라.

규칙을 보면 0부터 4 차이로 출력하는것이 보인다. 0과 다음문자열1, 4와 다음문자열5, 8과 다음문자열 9...

public String altPairs(String str) {
  String s = "";
  int l = str.length();
  
  for(int i = 0; i < l; i+=4){
      if((l % 2 == 1) && (i == l-1)){
        s += str.charAt(i);
      }else{
        s += str.substring(i,i+2);
      }
  }
  return s;
}

 

14. stringYak

"yak"문자열은 unlucky한 문자이다. yak이 나오면 지워서 출력. 

이건 나한테 좀 어려웠다,,,ㅜㅎ

public String stringYak(String str) {
  String s = "";
  for(int i = 0; i < str.length(); i++){
    if(i+2 < str.length() && str.charAt(i) == 'y' && str.charAt(i+2) == 'k'){
      i +=2;
    }else{
      s += str.charAt(i);
    }
  }
  return s;
}

 

15. array667

주어진 정수형 배열에서 6뒤에 6이나 7이 나오는 수를 세서 출력해라.

public int array667(int[] nums) {
  int count = 0;
  for(int i = 0; i < nums.length-1; i++){
    if(nums[i] == 6){
      if((nums[i+1] == 6) || nums[i+1] == 7){
        count++;
      }
    }
  }
  return count;
}

 

16. noTriples

주어진 정수형 배열에서 같은 수가  3번 반복되서 나오지 않는다면 true를 출력해라.

public boolean noTriples(int[] nums) {
  for(int i = 0; i < nums.length-2; i++){
    if((nums[i] == nums[i+1]) && (nums[i] == nums[i+2]) && (nums[i+1] == nums[i+2])){
      return false;
    }
  }
  return true;
}

 

17. has271

주어진 정수형 배열에서 첫번째 숫자, 첫번째 숫자 + 5, 첫번째숫자-1로 차례로 출력되는 배열이 있으면 true를 반환해라. 추가적으로 마지막 세번째 숫자는 (첫번째 숫자-1) ± 2내로 나와도 true로 반환해라.

public boolean has271(int[] nums) {
  for(int i = 0; i < nums.length-2; i++){
    int n = nums[i];
    if((n+5 == nums[i+1]) && (Math.abs(nums[i+2]- (n-1)) <= 2)){
      return true;
    }
  }
  return false;
}
728x90

'Algorithm > CODINGBAT[Java]' 카테고리의 다른 글

CodinBat Array-1  (0) 2021.10.04
CodingBat Map-2  (0) 2021.09.28
CodingBat Map-1  (0) 2021.09.28
CodingBat String-1  (0) 2021.09.27
CodingBat Warmup-1  (0) 2021.09.27