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

CodingBat Warmup-1

by 씨니 2021. 9. 27.
728x90

코딩 Warmup은 기본문제이지만,, CodingBat로그인을 안해서 한 3번씩 푼것같다...

기본문제이기도 하지만 내 기본도 아직은 많이 부족해 코딩이 복잡한 기분이든다..(;´д`)ゞ

문제도 영어로 되어있어서, 슬프게도 풀면서 많이 막히면 Solution도 열어서 봤다는..

 

어쨌든!CodingBat문제 풀이 정리시작!

 

 

1. SleepIn

weekday라면 weekday는 true, vacation이라면 vacation은 true.

우리는 weekday가 아니고 vacation이라면 sleep한다. 만약 sleep이라면 true를 반환하라.

public boolean sleepIn(boolean weekday, boolean vacation) {
  if(!weekday || vacation){
    return true;
  }
  return false;
}

위의 문제는 말그대로 weekday가 아니거나 vacation이라면 true를 반환하고 그렇지 않으면 false를 반환하라 이해했다.

 

2. monkeyTrouble

우리는 두마리의 a monkey, b monkey가 있다. 

우리는 두명다 웃을경우, 둘다 웃지 않을경우 문제가 발생한다. 문제가 발생하면 true를 반환하라.

public boolean monkeyTrouble(boolean aSmile, boolean bSmile) {
  if((aSmile && bSmile) || (!aSmile && !bSmile)){
    return true;
  }
  return false;
}

 

3. sumDouble

두개의 정수형 값이 주어지면, 두 정수형의 합을 반환하라. 만약 주어진 두개의 정수가 같은 값이면, 두수의 합의 double을 반환하라.

public int sumDouble(int a, int b) {
  int sum = a+b;
  if(a==b){
    sum *= 2;
  }
  return sum;
}

 

4. diff21

숫자 n이주어지면, n과 21의 차이를 반환해라. n이 21이상의 값인경우 차이의 2배를 반환해라.

public int diff21(int n) {
 
  if(n < 21){
    return 21-n;
  }
  else{
    return (n-21)*2;
  }
}

 

5. parrotTrouble

파라미터 hour의 값 범위는 0..23. 앵무새가 7시전이나 20시 이후 말을하게되면 문제발생. 문제가 발생하게 되면 true반환.

public boolean parrotTrouble(boolean talking, int hour) {
  if(talking && (hour < 7 || hour > 20)){
    return true;
  }
  return false;
}

 

6. makes10

주어진 두개의 정수형 a,b의 합이 10이거나, 둘중 하나라도 10인경우 true 반환.

public boolean makes10(int a, int b) {
  if((a == 10 || b == 10) || a+b == 10){
    return true;
  }
  return false;
}

 

7. nearHundred

주어진 숫자 n이 100혹은 200의 10차이 안밖이면 true반환. (Math.abs(num)사용 == 절대값)

밑에 코드는 Math.abs를 사용하지 않은 코드와, 사용한 코드.

public boolean nearHundred(int n) {
  if((n >= 90 && n <=110) || (n >= 190 && n <=210)){
    return true;
  }
  return false;
}
public boolean nearHundred(int n) {
  return Math.abs(n-100)<=10 || Math.abs(n-200)<=10;
}

 

8. posNeg

주어진 정수형 2개중 하나가 부정(0보다 작고)이고 하나가 긍정(0보다 크면)이면 true반환.

만약 negative가 ture이고, 둘다 부정(0보다 작음)이면 true반환.

public boolean posNeg(int a, int b, boolean negative) {
  if(negative){
    return (a < 0) && (b < 0);
  }else{
    return (a> 0 && b <0)||(a<0 && b>0);
  }
}

 

9. notString

주어진 문자열 맨 앞에 "not"을 붙여라. 그러나 만약 이미 문자열 앞에 "not"이 있다면 문자열을 바꾸지말고 반환해라.

.equals() 사용해 두문자열 비교할 것.

public String notString(String str) {
  if(str.length() > 2 && str.substring(0,3).equals("not")){
    return str;
  }
  return "not " + str;
}

 

10. missingChar

주어진 문자열 str과 정수형 n이있다. 문자열str의 인덱스 n번째 문자를 삭제해 문자열을 반환하여라.

(n의 범위는 0부터 str.length()-1까지 이다.)

public String missingChar(String str, int n) {
  if(n == 0){
    return str.substring(1);
  }
  if((n > 0) && (n < str.length()-1)){
    return str.substring(0,n) + str.substring(n+1,str.length());
  }
  if(n == str.length()-1){
    return str.substring(0,str.length()-1);
  }
  return str;
}

내가 푼 문제 풀이,,ㅜㅜ 넘 길다,,

public String missingChar(String str, int n) {
	return str.substring(0,n) + str.substring(n+1,str.length());
}

이렇게 쉽게 풀수 있는걸 너무 머리꽁꽁 싸매면서 했다..ㅜ 노력하자!

 

11. frontBack

주어진 한나의 문자열을, 첫번째 문자와 마지막 문자를 바꿔서 반환하여라

public String frontBack(String str) {
  String s = "";
  if(str.length()> 1){
    s = str.charAt(str.length()-1) + str.substring(1,str.length()-1) + str.charAt(0);
    return s;
  }
  return str;
}

 

 

12. front3

주어진 하나의 문자열의 앞 3글자를 3번 반복해서 출력하라. 만약, 문자열이 3글자보다 적다면 그 문자를 3번 반복해서 출력해라.

public String front3(String str) {
  if(str.length() > 2){
    str = str.substring(0,3);
  }
  return str + str + str;
}

 

13. backAround

주어진 한문자열의 마지막 문자를 문자열 맨앞과 맨뒤에 추가하여 출력할것. ex) cat -> tcatt.

public String backAround(String str) {
  return str.substring(str.length()-1) + str + str.substring(str.length()-1);
}

 

14. or35

주어진 정수형 n이 3의 배수이거나 5의 배수인 숫자인 경우 true를 반환해라. ( '%'를 사용하여라)

public boolean or35(int n) {
  if(n % 3 == 0 || n % 5 == 0){
    return true;
  }
  return false;
}

 

15. front22

주어진 문자열의 맨앞과 맨뒤에, 문자열의 앞 두글자를 추가하여 문자열을 반환하여라.

public String front22(String str) {
  if(str.length() > 2){
    return str.substring(0,2) + str + str.substring(0,2);
  }
  return str + str + str;
}

 

16. startHi

주어진 문자열이 "hi"로 시작한다면 true를 반환하여라.

Pattern.matches를 사용한방법과, 일반 방법 두가지가 있다.

public boolean startHi(String str) {
  return java.util.regex.Pattern.matches("hi.*?",str);
}
public boolean startHi(String str) {  
  String s = ""; 
  if(str.length() >= 2){ 
    s = str.substring(0,2);
  }
  return s.equals("hi");
}

 

17. icyHot

주어지는 두개의 온도에서 하나느 0보다 작고, 다른 하나는 100보다 크면 true를 반환하여라.

public boolean icyHot(int temp1, int temp2) {
  if((temp1>100 && temp2 < 0) || (temp1 < 0 && temp2 >100)){
    return true;
  }
  return false;
}

 

18. in1020

주어진 두 값중 하나라도 10~20내의 숫자라면 true를 반환하여라.

public boolean in1020(int a, int b) {
  if((a>=10 && a<=20) || (b >= 10 && b<=20)){
    return true;
  }
  return false;
}

 

19. hasTeen

우리는 숫자의 범위가 13~19내에 포함이 되면 "teen"이라 부른다. 주어진 3개의 정수형에서 하나 이상 "teen"이 나온다면 true를 반환하라.

public boolean hasTeen(int a, int b, int c) {
  return ((a>=13 && a<=19) || (b>=13 && b<=19) || (c>=13 && c<=19));
}

 

20. loneTeen

우리는 숫자의 범위가 13~19내에 포함이 되면 "teen"이라 부른다. 주어진 두개 정수형에서 둘중 하나가 teen이 나오거나 두숫자 모두 teen이 아닐때 true를 반환해라.

public boolean loneTeen(int a, int b) {
  if((a>=13&& a<=19) || (b>=13 && b<=19) ){
    if((a>=13&& a<=19) && (b>=13 && b<=19)){
      return false;
    }
    return true;
  }
  return false;
}

 

21. delDel

주어진 문자열에서 인덱스 1번째부터 "del"이 나타난다면, "del"을삭제해서 문자열을 출력해라. 아닌경우에는 문자열을 바꾸지 않고 그대로 출력하여라.

public String delDel(String str) {
  if(str.length() > 3 && str.substring(1,4).equals("del")){
    str = str.substring(0,1) + str.substring(4,str.length());
  }
  return str;
}

 

22. mixStart

주어진 문자열에서 mix,pix,six등과 같이 인덱스 2,3이 i,x라면 true를 출력하여라.

Pattern.matches를 사용한 방법과 일반방법.

public boolean mixStart(String str) {
  return java.util.regex.Pattern.matches(".ix.*?",str);
}
public boolean mixStart(String str) {
  String s = "";
  if(str.length() >= 3){
    s = str.substring(1,3);
  }
  return s.equals("ix");
}

 

23. startOz

주어진 문자열의 2개의 문자들로 한 문자열을 만들어라. 첫번째 문자가 'o'이고 두번째 문자가 'z'라면 "oz"를 출력하고 첫번째 문자열이 'o'이고 두번째 문자열이 'z'가 아니면 'o'만, 첫번째 문자열이 'o'가 아니고 두번째 문자열이 'z'이면 'z'만 출력하여라.

public String startOz(String str) {
  String s = "";
    if(str.length() > 0 && (str.charAt(0) == 'o')){
      s = "o";
    }
    if(str.length() > 1 && (str.charAt(1) == 'z')){
      s += "z";
    }
  return s;
}

 

24. intMax

주어진 세개의 정수형에서 가장 큰 값을 출력해라.

public int intMax(int a, int b, int c) {
  int max = 0;
  if(a > b){
    max = a;
  }else{
    max = b;
  }
  if(c > max){
    max = c;
  }
  return max;
}

 

25. close10

주어진 두개의 정수형중 10에 더 가까운 수를 출력해라. 만약 두수가 10과의 거리가 같다면 0을 출력해라.

(Math.abs사용할것)

public int close10(int a, int b) {
  if(Math.abs(10-a) > Math.abs(10-b)){
    return Math.abs(b);
  }else if(Math.abs(10-a) == Math.abs(10-b)){
    return 0;
  }
  return Math.abs(a);
}

 

26. in3050

주어진 두정수형의 범위가 30-40내이거나 40-50사이라면 true를 반환해라.

public boolean in3050(int a, int b) {
  return ((a>=30&& a<=40)&&(b>=30&& b<=40))||((a>=40&& a<=50)&&(b>=40&& b<=50));
}

 

27. max1020

0보다큰 두개의 정수형중 더 큰 정수가 10-20내에 존재한다면 큰 정수 값을 반환해라.

만약 둘다 10-20내에 값이 존재하지 않는다면 0을 반환해라.

public int max1020(int a, int b) {
  if((a>=10 && a<=20) && !(b>=10 && b<=20)){
    return a;
  }
  if(!(a>=10 && a<=20) && (b>=10 && b<=20)){
    return b;
  }
  if((a>=10 && a<=20) && (b>=10 && b<=20)){
    return (a>b) ? a : b;
  }
  return 0;
}

내가푼것,, 너무 복잡하다...

public int max1020(int a, int b) {
  if(b>a){
    int temp = a;
    a = b;
    b = temp;
  }
  if((a>=10 && a<=20)) return a;
  if((b>=10 && b<=20)) return b;
  return 0;
}

solution은 갓벽 간단 그자체..

 

28. stringE

주어진 문자열내에서 e가 1~3개가 포함되어있으면 true를 반환해라.

pattern.matches를 사용한 방법과 일반코드방법.

public boolean stringE(String str) {
  return java.util.regex.Pattern.matches("[^e]*?e[^e]*?e?[^e]*?e?[^e]*?",str);
}
public boolean stringE(String str) {
  int count = 0;
  for(int i = 0; i < str.length(); i++){
    if(str.charAt(i) == 'e'){
        count++;
    }
  }
  return count >= 1 && count <= 3;
}

 

29. lastDigit

주어진 0보다 큰 정수형 숫자가 끝자리 숫자가 같다면 true를 반환해라. ex) 27과 57같은

(%를 사용해라. 17%10 = 7인것처럼)

public boolean lastDigit(int a, int b) {
  return (a % 10) == (b % 10);
}

 

30. endUp

주어진 문자열에서 마지막 3개 문자들을 대문자로 바꾸어 출력해라. 만약 주어진 문자열길이가 3보다 작다면, 모든 문자들을 대문자로 바꾸어 출력해라(str.toUpperCase()함수 사용해라 -> 대문자 변환함수)

public String endUp(String str) {
  if(str.length()>2){
    String s = str.substring(str.length()-3);
    s = str.substring(0,str.length()-3) + s.toUpperCase();
    return s;
  }
  return str.toUpperCase();
}

 

31. everyNth

비어있지않은 문자열str을 0부터 시작해 다음 문자열의 모든 정수형 n번째 문자를 반환해라.(n은 1이상)

ex) n이 3이라면, 0,3,6,9번째 문자를 출력해라.

public String everyNth(String str, int n) {
  String s = "";
  for(int i=0; i < str.length(); i+=n){
    s += str.charAt(i);
  }
  return s;
}
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-2  (0) 2021.09.27