-
백준 1668번 : 트로피 진열 (C 언어)c c++ 언어 공부 2023. 10. 15. 14:16
https://www.acmicpc.net/problem/1668
1668번: 트로피 진열
민식이는 “오민식”이라는 팀이름으로 수없이 많은 로봇대회를 우승했다. 따라서 민식이의 집에는 트로피가 많다. 민식이는 트로피를 어떤 선반 위에 올려놨다. 이 선반은 민식이의 방문을 열
www.acmicpc.net
Code:
12345678910111213141516171819202122232425262728293031#include <stdio.h>int main() {int arr[51] = { 0, };int n;scanf("%d", &n);for (int i = 0; i < n; i++){scanf("%d", &arr[i]);}int left=1, right=1;int mid = arr[0];for (int i = 1; i < n; i++){if (mid < arr[i]){left++;mid = arr[i];}}mid = arr[n - 1];for (int i = n-2; i >= 0; i--){if (mid < arr[i]){right++;mid = arr[i];}}printf("%d\n%d", left, right);}cs 문제 설명
민식이는 로봇대회에서 여러 번 우승하여 많은 트로피를 가지고 있습니다. 트로피들을 선반에 올려놓았는데, 선반을 왼쪽에서 보면 뒤에 있는 트로피가 가려져 보이지 않습니다. 마찬가지로 오른쪽에서 보면 앞에 있는 트로피가 가려져 보이지 않습니다. 주어진 트로피의 높이 정보를 기반으로 왼쪽에서 보이는 트로피의 개수와 오른쪽에서 보이는 트로피의 개수를 구하는 것이 이 문제의 목표입니다.
1. 배열 및 변수 선언
- arr[51]: 트로피의 높이를 저장하는 배열
- n: 트로피의 개수
- left: 왼쪽에서 보이는 트로피의 개수
- right: 오른쪽에서 보이는 트로피의 개수
- mid: 비교를 위한 중간 값
2. 트로피 정보 입력
- scanf("%d", &n): 트로피의 개수를 입력받음
- 각 트로피의 높이를 입력받아 배열 arr에 저장
3. 왼쪽에서 보이는 트로피 개수 구하기
- 배열의 첫 번째 원소를 mid에 저장
- 배열을 순회하면서 현재 트로피의 높이와 mid를 비교하여 높이가 더 크면 왼쪽에서 보이는 트로피의 개수(left)를 증가시키고 mid를 업데이트
4. 오른쪽에서 보이는 트로피 개수 구하기
- 배열의 마지막 원소를 mid에 저장
- 배열을 역순으로 순회하면서 현재 트로피의 높이와 mid를 비교하여 높이가 더 크면 오른쪽에서 보이는 트로피의 개수(right)를 증가시키고 mid를 업데이트
5. 결과 출력
- 왼쪽에서 보이는 트로피의 개수와 오른쪽에서 보이는 트로피의 개수 출력 (printf("%d\n%d", left, right))
'c c++ 언어 공부' 카테고리의 다른 글
백준 12865번 : 평범한 배낭 (C 언어) (0) 2023.10.17 백준 16173번 : 점프왕 쩰리 (Small) (C 언어) (0) 2023.10.16 백준 3023번 : 마술사 이민혁 (C 언어) (1) 2023.10.14 백준 14248번 : 점프 점프 (C 언어) (1) 2023.10.12 백준 3985번 : 롤 케이크 (C 언어) (0) 2023.10.10