코딩테스트

BOJ : 2851

joonwoong 2024. 5. 24. 01:26
  1. 문제

 

2. 문제 분석 알고리즘 설계

 

sum_max가 100을 넘는 순간 flag를 true로 바꾸고 calculate 함수에서 그 전까지의 합과 비교하여 100과 가까운 수를 result에 저장한다.

혹시 다 합쳐도 100이 넘지 않는다면 ( flag가 false라면 ) sum_max값을 출력한다.

 

3. 코드

package week8;

import java.io.*;

public class Q2851_boj {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int sum_min = 0;
        int sum_max = 0;
        int result = 0;
        boolean flag = false;
        int count = 0;

        for(int i=0;i<10;i++){
            int n = Integer.parseInt(br.readLine());
            count++;
            System.out.println(count);
            sum_max += n;

            if(sum_max >= 100 && !flag){
                flag = true;
                result = calculate(sum_max, sum_min);
                sum_min += n;
            }

            sum_min += n;
        }
        if(flag == false){
            result = sum_max;
        }
        System.out.println(result);
    }

    public static int calculate(int x, int y){
        if((x-100)==(100-y)){
            return x;
        }else if((x-100)>(100-y)){
            return y;
        }else{
            return x;
        }
    }
}

 

4. 시간복잡도

 

O(N)

 

5. 결과

 

6. 틀린 이유

 

중간에 카운트 확인하려고 출력해놓은 것을 지우지 않아서 틀렸습니다ㅠㅠ

 

7. 소감

 

쉽습니다.

'코딩테스트' 카테고리의 다른 글

BOJ : 11659  (0) 2024.05.27
BOJ : 2003  (0) 2024.05.26
BOJ : 11058  (2) 2024.05.22
BOJ : 12845  (0) 2024.05.22
BOJ : 2217  (0) 2024.05.22