[algorithm] 백준 2562번 최댓값

2025. 10. 25. 14:45·algorithm/기초 코드
반응형

 

수를 입력받고 그 중 가장 큰 수를 찾고

그게 몇번째 수인지 알아내면되는 간단한 문제이다

 

수를 배열에 넣었다고 치면 0번째 요소가 가장 큰 수라면 최댓값이 1번째 수로 되도록 출력해야한다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    cin.tie(0);
    ios::sync_with_stdio(0);

    int a;
    int max_value=0;
 
    vector<int> vec(10);
    
    for (int tmp=1; tmp<10; tmp++)
        {
            cin >> a;
            vec.at(tmp) = a; 
        }

    for (int tmp : vec)
        {
            if (tmp > max_value)  
            {
                max_value = tmp;                
            }
                
            
        }

    cout << max_value << "\n";
    int index = find(vec.begin(), vec.end(), max_value) - vec.begin(); 
    cout << index;


    return 0;
}

 

인덱스를 헷갈리지 않기위해 처음에 

벡터를 10칸 생성하고 1번 인덱스부터 집어넣었다

 

그리고 벡터에 요소를 넣을 때 push_back을 사용할 경우

원하는 인덱스에 값을 넣을 수 없고

앞쪽부터 밀어넣어지는 방식이라 at 함수를 사용하여 값을 교체했다.

insert함수를 사용해도 된다

 

그리고 max_value의 위치를 찾기 위해서 find함수를 사용했다

find()는 반복자(iterator)를 반환한다

반복자는 내부적으로 주소를 갖고있는 객체라고 이해하면 좋다

 

반복자를 반환하기 때문에 find()의 return 값에 vec.begin() 값을 빼주면

distance개념으로 작용해 인덱스 위치를 구할 수 있다

 

// Authored by : wogha95
// Co-authored by : -
// http://boj.kr/e8b0bfc16a1e4c9fbe75c66e7ec6c341
#include <bits/stdc++.h>
using namespace std;

int n, maxvalue, maxindex;

int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
    
  for(int i = 1; i < 10; i++){
    cin >> n;
    // 전역변수의 초기값은 0이므로 바로 비교 가능합니다.
    if(maxvalue < n){
      maxvalue = n;
      maxindex = i;
    }
  }
  cout << maxvalue << "\n" << maxindex;
}

 

다른 풀이도 찾아봤는데 너무 간단하게 풀어서 감탄했다

아직 머리속으로 생각한 풀이를 코드로 직관적으로 표현해내는 능력이 부족한 것 같다

 

// Authored by : BaaaaaaaaaaarkingDog
// Co-authored by : -
// http://boj.kr/359583ea75ef49f7acf7c5564827ebba
#include <bits/stdc++.h>
using namespace std;

int a[9];
int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);

  for(int i = 0; i < 9; i++) cin >> a[i];
  cout << *max_element(a, a+9) << '\n';
  cout << max_element(a, a+9) - a + 1;
}

/*
max_element 함수를 이용한 풀이
*/

max_element를 이용한 풀이도 있다

*를 이용하여 de-reference를 해줘 주소에 맞는 값을 출력하고(역참조)

 

max_element도 반복자를 반환하므로

똑같이 distance 개념으로 풀이해준 것으로 보인다.

 

참고로 저기서   cout << max_element(a, a+9) - a + 1; 에서 

a는 배열의 첫 번째 요소의 주소를 가리킨다.

반응형

'algorithm > 기초 코드' 카테고리의 다른 글

[algorithm] 백준 2438번 별찍기 - 1  (0) 2025.10.25
[algorithm] 백준 15552번 빠른 A+B  (0) 2025.10.25
[algorithm] 백준 10804 카드 역배치  (0) 2025.10.18
[algorithm] 백준 1267번 핸드폰 요금  (0) 2025.10.18
[algorithm] 백준 2309번 일곱난쟁이  (0) 2025.10.18
'algorithm/기초 코드' 카테고리의 다른 글
  • [algorithm] 백준 2438번 별찍기 - 1
  • [algorithm] 백준 15552번 빠른 A+B
  • [algorithm] 백준 10804 카드 역배치
  • [algorithm] 백준 1267번 핸드폰 요금
20puddle
20puddle
20puddle 님의 블로그 입니다.
  • 20puddle
    20puddle 님의 블로그
    20puddle
  • 전체
    오늘
    어제
    • 분류 전체보기 (100)
      • Spring boot (5)
      • git & github (5)
      • algorithm (47)
        • theory (3)
        • 배열 (7)
        • 연결 리스트 (3)
        • 스택 (5)
        • 큐 (3)
        • 덱 (2)
        • 기초 코드 (19)
        • BFS (5)
      • AI (43)
        • Machine Learning (35)
        • Deep Learning (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오프라인 학습
    AI
    인공지능
    주성분변환
    그레디언트 클리핑
    연결리스트
    Aimers
    홀드아웃 검증
    DL
    list
    ML
    알고리즘
    Java
    git
    github
    백준
    게시판
    딥러닝
    Spring Boot
    머신러닝
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
20puddle
[algorithm] 백준 2562번 최댓값
상단으로

티스토리툴바