- 문제

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 |