Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 알고리즘
- 백준
- D3
- Java
- 디자인패턴
- C++
- 자료구조
- SWEA
- 11060
- 블록
- 재밌게 할래요
- Initiative Q
- spring
- level2
- 레퍼럴
- BOJ
- 점프 점프
- SOLID
- 리퍼럴
- 삼성 SW 역량 테스트 기출 문제
- Design Pattern
- 어싱크
- Meta Quest3
- 10505
- d4
- 메타퀘스트3
- 프로그래머스
- D2
- 논블록
- 이니셔티브 q
Archives
- Today
- Total
아직은 정체성이 없는 블로그
[SWEA][D4][c++] 3752. 가능한 시험 점수 본문
문제
3752. 가능한 시험 점수
문제 링크
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWHPkqBqAEsDFAUn
풀이 과정
ex) n의 값이 2,3,5가 주어졌을 때
1.문제에서 주어진 최대 결과값 10001길이의 socre 배열을 선언한다
2.주어진 수를 한개씩 입력 받고 sum변수에 더한다.
3.입력을 하나씩 받을때 마다 sum 변수 부터 0 까지 socre 배열을 탐색하면서 socre[index]값이 0보다 크면 index값에 현재 주어진 수의 값을 더한 위치 score[index+주어진 수]에 1을 더한다.
4. 2~3의 반복과정을 끝낸후 0부터 sum 변수까지 socre[] 배열의 값이 0보다 큰 값의 개수를 구하여 출력한다.
코드
#include<iostream>
#include<cstring>
using namespace std;
int main(int argc, char** argv)
{
int arr[100];
int score[10001];
int test_case;
int T;
cin>>T;
for(test_case = 1; test_case <= T; ++test_case)
{
int n;
int sum=0;
int ans=0;
cin >> n;
memset(arr,0,sizeof(arr));
memset(score,0,sizeof(score));
score[0]=1; // 0은 항상 존재
for(int i=0; i<n; i++){
cin >> arr[i];
sum+=arr[i];
for(int j=sum; j>=0; j--)
if(score[j]>0)
score[j+arr[i]]++;
}
// 중복을 제외한 값 찾기
for(int i=0; i<=sum; i++)
if(score[i]>0)
ans++;
cout <<"#"<<test_case<<" "<<ans<<"\n";
}
return 0;
}
'알고리즘 역량테스트 문제 > SWEA' 카테고리의 다른 글
[SWEA][D3][c++] 10059. 유효기간 (0) | 2020.07.13 |
---|---|
[SWEA][D4][c++] 1249. [S/W 문제해결 응용] 4일차 - 보급로 (4) | 2020.07.08 |
[SWEA][D2][c++] 1954. 달팽이 숫자 (0) | 2020.07.05 |
[SWEA][D2][c++] 1961. 숫자 배열 회전 (0) | 2020.07.04 |
[SWEA][D2][c++] 1966. 숫자를 정렬하자 (0) | 2020.07.04 |
Comments