CodingBat Warmup-2

CodingBat Warmup-2

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

⬆ 내가 푼 방식

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

from http://shinny.tistory.com/35 by ccl(A) rewrite - 2021-09-27 22:00:40