-
[백준 10773번] 제로 (Java 풀이)Algorithm/기타 2020. 2. 27. 18:48
백준알고리즘 10773번 : 제로
등장하는 숫자들의 합을 구하되,
숫자 0이 나오면 가장 최근에 나온 숫자는 합에서 제외하여 총 합을 출력하는 문제이다.
처음에는 0은 바로 방금 전에 나온 숫자만 빼주는 문제인 줄 알았다.
그러니까, 3, 4, 5, 0, 0 과 같은 방식으로 나왔으면,
5는 없어지되, 마지막 0은 정상적으로 더해줘야 되는 값인줄 알았는데
결과적으로 문제는 0의 갯수만큼 가장 최근에 나온 숫자들을 합에서 제외하는 것을 요구한다.
즉 해당 예제의 답은 4와 5를 제외한 3인것이다.
0의 갯수를 Count, 다른 숫자들은 List에 집어 넣은 뒤, LIst에서 0의 갯수만큼을 뺸 길이만 더할까 하다,
이러면 for문이 두번 돌아 시간초과가 발생할 듯 싶어
하나의 for문에서 LIst의 add, remove와 총 합의 덧셈, 뺄셈을 병행했다.
풀이 과정
1. ArrayList와 총 합을 넣은 int 변수를 선언 한뒤,
길이만큼 for문을 돌게하여 Scanner 값을 받아온다.
2-1. 받아온 값이 0이 아니면,
ArrayList에 값을 추가하고 총 합에 해당 값을 더한다.
2-2. 받아온 값이 0이면,
ArrayList의 가장 최근에 받아온 값을 삭제하고, 총 합에서 해당 값을 뺀다.
3. 출력한다.소스 ▽
더보기import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { // 10773번 제로 Scanner sc = new Scanner(System.in); int count = sc.nextInt(); int sum = 0; ArrayList<Integer> arr = new ArrayList<Integer>(); for (int i = 0; i < count; i++) { int num = sc.nextInt(); if (num != 0) { arr.add(num); sum += num; } else { sum -= arr.remove(arr.size() - 1); } } System.out.println(sum); } }
'Algorithm > 기타' 카테고리의 다른 글
[백준 17264번] I AM IRONMAN (Java 풀이) (0) 2020.03.08 [백준 1292번] 쉽게 푸는 문제 (Java 풀이) (0) 2020.02.28 [백준 1094번] 막대기 (Java 풀이) (0) 2020.02.16 [백준 5635번] 생일 (Java 풀이) (0) 2020.02.05 [백준 11650번] 좌표 정렬하기 (Java 풀이) (0) 2020.01.28