[C++] 백준 1668 트로피 진열
2021. 3. 27.
반응형

www.acmicpc.net/problem/1668

 

1668번: 트로피 진열

민식이는 “오민식”이라는 팀이름으로 수없이 많은 로봇대회를 우승했다. 따라서 민식이의 집에는 트로피가 많다. 민식이는 트로피를 어떤 선반 위에 올려놨다. 이 선반은 민식이의 방문을 열

www.acmicpc.net

1. 서론

 

왜 이렇게 브론즈 문제는 쉬운데 말이 많을까... 말로 현혹시켜서 문제를 못 풀게 하려는 의도인가? 쓸모없는 설정이 너무 많아서 문제를 이해하는데 시간을 걸리게 하려는 음해로 밖에 안 보임!!!

 

2. 문제 풀이

 

입력 첫째줄에 트로피의 개수가 주어진다. 그리고 그 트로피의 길이가 주어지는데 주어지는 순서는 왼쪽부터 오른쪽 순서대로 주어진다.

트로피의 길이가 다른 트로피들보다 길다면 그 뒤에 있는 트로피는 안 보이므로 왼쪽과 오른쪽에서 본 트로피의 개수는 다르다.

그렇게 트로피가 서있다고 가정할 때 왼쪽에서 보이는 트로피의 개수와 오른쪽에서 보이는 트로피의 개수를 출력하는 문제다. 

 

배열로 트로피의 길이를 받았다고 생각했을 때 왼쪽은 0기준, 오른쪽은 n기준으로. 즉 배열을 앞에서부터 끝까지, 뒤에서부터 제일 앞까지 보면서 최고의 값을 보는데 그 와중에 최고의 값을 기준으로 더 크면 count 하면 된다. 

 

0 기준 -> 1 2 3 4 5  => 5개

n 기준 -> 5 => 1개

 

3. 코드 설명

 

#include <iostream>

using namespace std;

int main()
{
    int n, i, c = 0, m = 0;
    int a[50];

    cin >> n;

    for (i = 0; i < n; i++)
        cin >> a[i];

    for (i = 0; i < n; i++)
    {
        if (m < a[i])
        {
            m = a[i];
            c++;
        }
    }
    
    cout << c << endl;

    c = 0; m = 0;
    for (i = n - 1; i >= 0; i--)
    {
        if (m < a[i])
        {
            m = a[i];
            c++;
        }
    }

     cout << c << endl;
}

 

n과 배열을 입력받고 배열을 0부터, n-1부터 돌려서 가장 큰 값을 찾음과 동시에 그 값이 바뀌면 c에 count 한다.

그게 각각 왼쪽과 오른쪽에서 보이는 트로피의 값이다.

 

 

 

 

반응형

'Algorithm' 카테고리의 다른 글

[C++] 백준 15969 행복  (0) 2021.04.16
[C++] 백준 1236 성 지키기  (1) 2021.03.28
[C++] 백준 1568 새  (0) 2021.03.27
[C++] 백준 1302 베스트셀러  (0) 2021.03.27
[C++] 백준 1543 문서 검색  (0) 2021.03.26
myoskin