enoch012 / JavaBasicStudy

Java 기초 스터디 (2023.09 ~ 10)
0 stars 1 forks source link

11월 23일 / 코딩테스트 연습 (minju) #50

Open MJKIM9403 opened 11 months ago

MJKIM9403 commented 11 months ago

문제 1

문제 문자열안에 문자열(https://school.programmers.co.kr/learn/courses/30/lessons/120908)

입출력 예

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

입출력 예

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

        return answer;
    }
}

회고

-matches를 먼저 사용해봤는데 3개 중 2개만 성공하고 contains로 했더니 성공했습니다.

MJKIM9403 commented 11 months ago

문제 2

문제 배열 비교하기(https://school.programmers.co.kr/learn/courses/30/lessons/181856)

이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.

입출력 예

arr1 arr2 result
[49, 13] [70, 11, 2] -1
[100, 17, 84, 1] [55, 12, 65, 36] 1
[1, 2, 3, 4, 5] [3, 3, 3, 3, 3] 0

입출력 예

class Solution {
    public int solution(int[] arr1, int[] arr2) {
        //길이가 다르면 긴쪽이 크다. 길이가 같다면... 합비교
        int answer = 0;
        int arrLength1= arr1.length;
        int arrLength2= arr2.length;
        int arrSum1 = 0;
        int arrSum2 = 0;

        for(int i=0; i<arrLength1; i++){
            arrSum1 +=arr1[i];
        }

        for (int i = 0; i < arrLength2; i++) {
            arrSum2 += arr2[i];
        }

        if (arrLength1 != arrLength2) {
            if (arrLength1 > arrLength2) {
                answer = 1;
            } else if (arrLength1 < arrLength2) {
                answer = -1;
            } else {
                answer = 0;
            }
        }

        if (arrLength1 == arrLength2) {
            if (arrSum1 > arrSum2) {
                answer = 1;
            } else if (arrSum1 < arrSum2) {
                answer = -1;
            } else {
                answer = 0;
            }
        }

        return answer; 

    }
}

회고

-if문으로 비교하는 곳에서 오래걸림. 단순히 생각했다가 합을 어떻게 구하는지를 구하지 않았었음. for문으로 돌아가면서 배열을 다 더해주면된다.

MJKIM9403 commented 11 months ago

문제 3

첫 번째로 나오는 음수 (https://school.programmers.co.kr/learn/courses/30/lessons/181896)

정수 리스트 num_list가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다.

입출력 예

num_list | result -- | -- [12, 4, 15, 46, 38, -2, 15] | 5 [13, 22, 53, 24, 15, 6] | -1

입출력 예

회고

SDeung01 commented 11 months ago

1번 문제에 이런식으로 정규식을 사용하면 matches로도 풀이가 가능합니다...하지만 실행속도가 비교도 안될정도로 차이나니 정해진 문자열의 포함여부를 확인할때는 그냥 contains를 사용합시다...

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

image

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

image