하루하루 꾸준히, 인생은 되는대로

알고리즘

알고리즘 스터디 9주차

긤효중 2022. 5. 16. 18:29

https://www.acmicpc.net/problem/1546

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net

#include <iostream>
using namespace std;
int main(void){
    double arr[1000];
    int n;
    cin >> n;
    double max = 0;
    for(int i = 0;i<n;i++){
        cin >> arr[i];
    }
 
    for(int i = 0;i<n;i++){
        if(arr[i] > max){
            max = arr[i];
        }
    }
 
    double sum = 0;
    for(int i = 0;i<n;i++){
        arr[i] = (arr[i]/max) * 100;
        sum = sum + arr[i];
    }
    cout << sum/n;
 
}

https://www.acmicpc.net/problem/5052

 

5052번: 전화번호 목록

첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가

www.acmicpc.net

사전순으로 정렬을 하면 x의 접두사는 x의 바로 앞에 위치하는 것을 이용

 

#include <iostream>
#include <string>
#include <map>
#include <algorithm>
#define MAX 10001
 
using namespace std;
int main(void){
    int t;
    cin >> t;
    while(t--){
        string arr[MAX];
        int n;
        cin >> n;
        for(int i =0;i<n;i++){
            cin >> arr[i];
        }
        sort(arr,arr+n);
 
        bool is_not_valid = false;
        for(int i = 1;i<n;i++){
           string compare = "";     
           for(int j = 0;j<arr[i-1].size();j++){
              compare = compare + arr[i][j];
           } 
            if(compare == arr[i-1]){
                is_not_valid = true;
                break;
            }
        }
        if(is_not_valid == true){
            cout << "NO" << '\n';
        }
        else{
            cout << "YES" << '\n';
        }
    }
}