반응형

수를 입력받고 그 중 가장 큰 수를 찾고
그게 몇번째 수인지 알아내면되는 간단한 문제이다
수를 배열에 넣었다고 치면 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 |
