알고리즘 공부/C++

백준 21180번 Reconstruct Sum C++, 파이썬

마달랭 2024. 7. 18. 15:20
반응형

리뷰

파이썬이랑 C++ 시간 차이가 대단하다!

 

문제 풀이

  1. n을 입력 받아주고 n크기의 벡터에 숫자를 입력 받아준다.
  2. 합을 나타낼 sum을 0으로 초기화 해주고, 정답을 체크할 ans를 100001로 초기화 한다.
  3. for문을 돌며 현재 숫자가 전체 벡터합에서 자신을 뺀수와 동일하다면 ans를 최신화 하고 break 해준다.
  4. for문이 종료된 후 ans가 그대로 100001이면 BAD를 출력, 아니라면 ans값을 출력해 준다.

 

참고 사항

입력될 수 있는 최대 수가 10^5이므로 ans를 100001로 초기화 해주었다.

 

 

정답 코드

C++ 코드

#include <iostream>
#include <vector>

using namespace std;

int main() {
	int n;
	int sum = 0;
	int ans = 100001;
	cin >> n;
	vector<int> lst(n);
	for (int i = 0; i < n; i++) {
		cin >> lst[i];
		sum += lst[i];
	}
	for (int i = 0; i < n; i++) {
		if (lst[i] == sum - lst[i]) {
			ans = lst[i];
			break;
		}
	}
	if (ans < 100001) {
		cout << ans;
	}
	else {
		cout << "BAD";
	}
}

 

파이썬 코드

n = int(input())
lst = [int(input()) for _ in range(n)]
sum_val = sum(lst)
ans = 100001
for i in range(n):
    if lst[i] == sum_val - lst[i]:
        ans = lst[i]
        break
print("BAD" if ans >= 100001 else ans)
728x90
반응형