문제

문제출처 : Baekjoon

img

풀이

import java.util.*;

public class Main {
    public int solution(int[] arr, int num){
        int result = 0;
        int sum = 0;

        for(int i = 0; i < arr.length-2; i++){
            for(int j = i+1; j < arr.length-1; j++){
                for(int k = j+1; k < arr.length; k++){
                    sum = arr[i] + arr[j] + arr[k];
                    if(sum <= num && sum > result){
                        result = sum;
                    }
                }
            }
        }
        return result;
    }

    public static void main(String[] args) {
        Main function = new Main();
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int M = sc.nextInt();

        int[] arr = new int[N];
        for(int i = 0; i < N; i++){
            arr[i] = sc.nextInt();
        }

        sc.close();

        System.out.println(function.solution(arr, M));
    }
}

회고

  1. 브루트포스 알고리즘을 공부한적은 없지만 모든걸 검사하는 알고리즘이라 for문을 이용해서 하면 금방 하겠네~ 하고 풀었는데, for문안에 조건을 주는부분이 많이 헷갈렸다. 쉬울것같아도 만만하게 보지 않기ㅠㅠ..!
  2. i,j,k에 1,2,3을 넣어서 했었다가 여기서도 문제가 생겼고.. 제일 큰 이슈는 내 눈 이슈였다. 라섹한지 좀 지났는데도(한3주쯤 된듯?) 컴퓨터 글씨가 잘 안보이는데 i,j를 잘못써서 계속 arrayindexoutofboundsexception 이 에러가 계속나서 뭐지뭐지하고 모니터에 얼굴을 가까이하고 눈 크게 하고 보니 j for문에 j를 안쓰고 i를 쓴것을 발견…. 후… 내 눈이 제일 큰 이슈였다😥
  3. 한번 더 풀어보기!