algorithm

[Programmers] [코딩테스트 입문] 최댓값 만들기, 삼각형의 완성조건, 문자열 안에 문자열

hjkeeeem 2024. 9. 3. 01:50

최댓값 만들기(1) (120847)

class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        for (int i = 0; i < numbers.length-1; i++) {
            for (int j = i+1; j < numbers.length; j++) {
                if(answer < numbers[i] * numbers[j]){
                    answer = numbers[i] * numbers[j];
                }
            }
        }
        return answer;
    }
}

나는 위 사진과 같은 방법으로 이중 for문을 사용하여 i * j 값이 가장 큰 값을 answer 변수에 저장하는 방식으로 풀이했다.

그렇게 되면 모든 수가 한번씩 곱해질 수 있다.

 

 

 

삼각형의 완성조건(1) (120889)

// sides 배열 오름차순으로 정렬
// sides.length - 1번째를 가장 큰 값으로 지정
// 나머지 값들은 sum+= 을 이용하여 더해준다.
// 그렇다면 배열의 순서와 값의 크기 상관없이 문제를 풀 수 있다.
import java.util.*;
class Solution {
    public int solution(int[] sides) {
        int sum = 0 ;
        Arrays.sort(sides);
        sum = sides[0] + sides[1];
        
        if(sum > sides[sides.length - 1]){
            return 1;
        }else{
            return 2;
        }
    }
}

 

주석과 같이 오름차순 정렬을 먼저 해주었다. 세 변의 길이이기 때문에 배열의 크기는 고정이므로 바로 0번째 1번째 값을 더해주었다.

 

 

 

 

문자열 안에 문자열 (120908)

class Solution {
    // str2 의 0,1,2가 연속적으로 일치해야 함
    // str1 중 str2의 0번째가 일치하는 것을 찾기
    public int solution(String str1, String str2) {
        int cnt = 0;
        int num = 0;
        for(int i=0; i < str1.length(); i++) {
            if( str1.charAt(i) == str2.charAt(cnt)){
                num = i;
                break;
            }
        }
        
        for(int i=0; i < str2.length(); i++){
            if(str1.charAt(i+num) == str2.charAt(i)){
                cnt++;
            }else if(str1.charAt(i+num) != str2.charAt(i)){
                break;
            }
        }
        
        if(cnt == str2.length()){
            return 1;
        }else{
            return 2;
        }
        
        
    }
}

 

난 함수 쓸 생각 못했고 계속 풀이로 하는데 테스트에서 런타임에러나 다른 이유로 실패가 뜬다 ㅠ ㅠ

이 실패한 테스트 케이스가 뭔지 뜨지도 않아서 답답하다 계속 풀어보기로!

다른 사람들은 그냥 contains 함수를 이용해서 긴지아닌지만 판별해서 문제를 풀었는데. , , .,. ?!?!?!?!?!??!