티스토리 뷰

1️⃣ 문자열 안에 문자열

 

문제 설명

문자열 str1str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ str1의 길이 ≤ 100
  • 1 ≤ str2의 길이 ≤ 100
  • 문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다.

입출력 예

str1 str2 result
"ab6CDE443fgh22iJKlmn1o" "6CD" 1
"ppprrrogrammers" "pppp" 2
"AbcAbcA" "AAA" 2

 

  • 입출력 예 #1
    • "ab6CDE443fgh22iJKlmn1o" str1에 str2가 존재하므로 1을 return합니다.
    입출력 예 #2
    • "ppprrrogrammers" str1에 str2가 없으므로 2를 return합니다.
    입출력 예 #3
    • "AbcAbcA" str1에 str2가 없으므로 2를 return합니다.

 

💻 나의 풀이

class Solution {
    public int solution(String str1, String str2) {
        
        if(str1.contains(str2)){
            return 1;
        } else {
            return 2;
        }
    }
}

 

contains() 메소드로 간단하게 해결해줬습니다.

 

 

🔎 다른 사람의 풀이

class Solution {
    public int solution(String str1, String str2) {
        return (str1.contains(str2)? 1: 2);
    }
}

 

삼항연산자를 사용하면 더 간단하네요.

 


 

2️⃣ 제곱수 판별하기

 

문제 설명

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ n ≤ 1,000,000

입출력 예

n result
144 1
976 2

 

입출력 예 #1

  • 144는 12의 제곱이므로 제곱수입니다. 따라서 1을 return합니다.

입출력 예 #2

  • 976은 제곱수가 아닙니다. 따라서 2를 return합니다.

 

💻 나의 풀이

class Solution {
    public int solution(int n) {
        if (Math.sqrt(n)%1 == 0){
            return 1;
        } else {
            return 2;
        }
    }
}

 

제곱수를 어떻게 구할 수 있을까 고민했는데 Math클래스에 제곱근을 구하는 sqrt메소드가 있더라구요!

제곱수일 경우에는 제곱근을 구했을 때 소수 자리가 남지 않습니다.

그러므로 1로 나눈 나머지가 0이 됩니다.

 


 

3️⃣ 세균 증식

 

문제 설명

어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ n ≤ 10
  • 1 ≤ t ≤ 15

입출력 예

n t result
2 10 2048
7 15 229,376

 

입출력 예 #1

  • 처음엔 2마리, 1시간 후엔 4마리, 2시간 후엔 8마리, ..., 10시간 후엔 2048마리가 됩니다. 따라서 2048을 return합니다.

입출력 예 #2

  • 처음엔 7마리, 1시간 후엔 14마리, 2시간 후엔 28마리, ..., 15시간 후엔 229376마리가 됩니다. 따라서 229,376을 return합니다.

 

💻 나의 풀이

class Solution {
    public int solution(int n, int t) {
        int answer = n;
        
        for(int i=1; i<=t; i++){
            answer *= 2;
        }
        
        return answer;
    }
}

 

크게 고민하지 않고 t시간 만큼 2를 곱해주면 되겠다고 생각했습니다.

answer를 n (처음 세균의 마리수) 으로 초기화 시켜준 후, for문으로 t시간만큼 돌며 1부터 t까지 2씩 곱해줍니다.

 

 

🔎 다른 사람의 풀이

class Solution {
    public int solution(int n, int t) {
        int answer = 0;

        answer = n << t;

        return answer;
    }
}

 

비트연산으로 한칸씩 밀면 2를 곱한 것과 같으니까 t만큼 밀어주면 정답이 나온다고 합니다.

 


 

4️⃣ 문자열 정렬하기(2)

 

문제 설명

영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 0 < my_string 길이 < 100

입출력 예

my_string result
"Bcad" "abcd"
"heLLo" "ehllo"

 

입출력 예 #1

  • "Bcad"를 모두 소문자로 바꾸면 "bcad"이고 이를 알파벳 순으로 정렬하면 "abcd"입니다.

입출력 예 #2

  • "heLLo"를 모두 소문자로 바꾸면 "hello"이고 이를 알파벳 순으로 정렬하면 "ehllo"입니다.

💻 나의 풀이

import java.util.Arrays;

class Solution {
    public String solution(String my_string) {
        
        my_string = my_string.toLowerCase();
        
        char[] str = my_string.toCharArray();
        Arrays.sort(str); 
        String answer = new String(str);
        
        return answer;
    }
}

 

먼저 toLowerCase() 메소드를 통해 소문자로 변환해준 후, 문자열을 char 배열로 변환해서 Arrays.sort() 메소드를 통해 정렬해줬습니다. 

최종적으로 이 배열을 문자열로 만들어서 반환해줍니다.

 

 

 

🔎 다른 사람의 풀이

import java.util.*;

class Solution {
    public String solution(String my_string) {
        char[] c = my_string.toLowerCase().toCharArray();
        Arrays.sort(c);
        return new String(c);
    }
}

 

 

메소드를 이어서 작성해주고

반환도 한꺼번에 해서 더 간단하게 해결할 수 있습니다.

 

 

 

 

DAY18은 17보다 꽤나 쉬웠던 느낌이라 금방 해결했네요...!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함