반응형

문제링크 : https://www.acmicpc.net/problem/2775


<문제>

평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.

이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층에 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야한다” 는 계약 조항을 꼭 지키고 들어와야 한다.

아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있나를 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층에 i호에는 i명이 산다.

<입력>

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다. (1 <= k <= 14, 1 <= n <= 14)

<출력>

각각의 Test case에 대해서 해당 집에 거주민 수를 출력하라.


<예제입력>

2
1
3
2
3


<예제출력1>

6
10


<내답안>


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
32
33
34
35
36
37
38
39
40
41
42
43
#include<iostream>
using namespace std;
int main()
{
 
int testcase=0;
int c=0;
int h=0;
int *arr2=new int[testcase];
 
int arr[15][15];
 
    for (int i=0;i<15;i++)
    {
        arr[i][0]=1;
        arr[0][i]=i+1;
    }
 
    for(int i=1;i<15;i++)
    {
        for(int j=1;j<15;j++)
        {
            arr[i][j]=arr[i][j-1]+arr[i-1][j];
 
        }
    }
 
    cin>>testcase;
    for (int i=0; i<testcase; i++)
    {
    cin>>c;
    cin>>h;
 
    arr2[i]= arr[c][h-1];
    }
 
    for(int i=0; i<testcase; i++)
    {
    cout<<arr2[i]<<endl;
    }
 
 
}
cs


반응형
반응형

문제링크 : https://www.acmicpc.net/problem/4344


<문제>

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.


<입력>

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

<출력>

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

<예제입력>

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

<예제출력1>

40.000%
57.143%
33.333%
66.667%
55.556%





<내답안>

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include<iostream>
using namespace std;
int main()
{
    cout << fixed;
    cout.precision(3);
 
    int n=0;//testcase
    float lol;
    cin>>n;
 
    float *arr=new float[n];
    for(int i=0; i<n; i++)
    {
        float avg;
        float people;
        int count=0;
        int tmp=0;
        int a=0;
 
        cin>>people;
        a=people;
        int *arr2=new int[a];
 
        for(int j=0; j<people; j++)
        {
            cin>>arr2[j];
            tmp=arr2[j]+tmp;//학생총점
        }
        avg=tmp/people;
        
 
        for(int j=0; j<people; j++)
        {
            if(arr2[j]>avg)
            {
                count++;
            }
        }
        lol=(count/people)*100;
        arr[i]=lol;
 
    }
 
    for(int i=0;i<n;i++)
    {
        cout<<arr[i]<<"%"<<endl;
    }
    
 
}
cs


반응형

'알고리즘 > 알고리즘(c++)' 카테고리의 다른 글

백준[2751]_수 정렬하기2  (0) 2018.08.29
백준문제[2775번]_부녀회장이 될테야  (2) 2018.08.28
백준문제[1152]_단어의 개수  (0) 2018.08.27
백준문제[1205]_등수 구하기  (0) 2018.08.27
소수구하기  (0) 2018.05.01
반응형


문제링크 : https://www.acmicpc.net/problem/1152


<문제>

영어 대소문자와 띄어쓰기만으로 이루어진 문장이 주어진다. 이 문장에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오.


<입력>

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문장이 주어진다. 이 문장의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다.


<출력>

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문장이 주어진다. 이 문장의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다.



<예제 입력>

The Curious Case of Benjamin Button


<예제출력>

6



<내답안>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<cstring>
#include<cstdio>
 
using namespace std;
int main()
{
int count=0;
char cs[1000000];
cin.getline(cs, 1000000);
 
char * word = strtok(cs, " ");
    while(word != NULL)
    {
        count++;
        word = strtok(NULL" ");        
    }
 
 
cout<<count<<endl;
cin.clear();
}
cs


반응형
반응형


문제링크 : https://www.acmicpc.net/problem/1205


<문제>

유진이가 즐겨하는 디제이맥스 게임은 각각의 노래마다 랭킹 리스트가 있다. 이것은 매번 게임할 때 마다 얻는 점수가 비오름차순으로 저장되어 있는 것이다.

이 랭킹 리스트의 등수는 보통 위에서부터 몇 번째 있는 점수인지로 결정한다. 하지만, 같은 점수가 있을 때는 그러한 점수의 등수 중에 가장 작은 등수가 된다.

예를 들어 랭킹 리스트가 100, 90, 90, 80일 때 각각의 등수는 1, 2, 2, 4등이 된다

랭킹 리스트에 올라 갈 수 있는 점수의 개수 P가 주어진다. 그리고 리스트에 있는 점수 N개가 비오름차순으로 주어지고, 송유진의 새로운 점수가 주어진다. 이 때, 송유진의 새로운 점수가 랭킹 리스트에서 몇 등 하는지 구하는 프로그램을 작성하시오. 만약 점수가 랭킹 리스트에 올라갈 수 없을 정도로 낮다면 -1을 출력한다.

만약, 랭킹 리스트가 꽉 차있을 때, 새 점수가 이전 점수보다 더 좋을 때만 점수가 바뀐다. (예제 2)


<입력>

첫째 줄에 N, 송유진의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보다 작거나 같은 자연수 또는 0이다. 둘째 줄에는 현재 랭킹 리스트에 있는 점수가 비오름차순으로 주어진다.


<출력>

첫째 줄에 문제의 정답을 출력한다.


입력

3 90 10
100 90 80

예제 출력

2


입력

10 1 10
10 9 8 7 6 5 4 3 2 1

예제출력2

-1




내답안



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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<iostream>
using namespace std;
int main()
{
    int n;//점수배열갯수
    int mscore;
    int p;
    int d=1;
    
    
    cin >>n>>mscore>>p;
 
    int *arr=new int[n];
 
    for(int i = 0; i < n; i++)
    {
        cin >> arr[i];
    }
 
/*
    for(int i = 0; i < n; i++)
    {
    cout <<arr[i];
    }
*/
    for(int i = 0; i < n; i++)
    {        
        if (mscore<arr[i])
        {
        d=d+1;
        }
    }
 
    if(n==p&&arr[n-1]>=mscore)
        {
            cout<<"-1";
        }
    else{
            cout<<d;
        }
 
 
delete [] arr;
}
cs
 
cs


반응형

+ Recent posts