나 개발자 진짜 되냐?

코딩테스트 입문 - 가장 큰 수 찾기 ( max_element ) 본문

프로그래머스를 풀어보아요!/C++

코딩테스트 입문 - 가장 큰 수 찾기 ( max_element )

Snow Rabbit 2026. 5. 11. 20:09

 

'

"강산 맑은 것이 꼭 나와 닮았구나"

"달빛 고요한 것이 꼭 나와 닮았구나"

 

꼭 나처럼 맑고 고요하구나

 

요즘 듣고 있는 노래다.

 

사실 고요한 편은 아닌데..

맑다는 말은 많이 들어서 그런지

단어가 확 와닿는다.

 

좋다.

 


 

 

사실 제일 먼저 떠오른 건 map이었다.

map으로 값과 인덱스를 저장할 계획이었다.

 

근데 map을 어떻게 쓰는 건지 잠시 잊어버려서..ㅋㅋ

결국 인지 씨를 찾았다.

 

map보다 더 쉬운 게 있는데 이걸로 할 거야?
라고 물어서..

엇..

일단 풀어보겠다고 했다.

 

map <int, int> m으로 선언하고

 

for문으로 돌면서

한 개씩 map에 넣을 계획이었다.

 

 

map은 이름표가 붙은 사물함이다.

map에 물건을 넣을 땐

m [이름표] = 내용물; 

 

이렇게 넣는다.

이름표가 1 first이고

내용물이 2 second이다.

 

 예시 1로는

m [1] = 0;

m [8] = 1;

m [3] = 2;

로 저장된다.

 

map으로 저장하면 오름차순이어서

내림차순으로 바꾸려면

m.rbegin(); 해줘야 한다.

 

또한!!

m.rbegin()은 주소값을 반환하기 때문에

새 변수에 넣어줘야 한다.

 

auto it = m.rbegin(); 해줘야 한다.

여기서 auto를 쓰는 이유는..

auto를 안 쓰면

map <int, int>::reverse_iterator

을 풀로 다 써야 하기 때문에..

 

 auto로 통일한다.

 

그리고 그 값을 answer에 넣으려면

answer.push_back( it->first )

answer.push_back( it->second )

map의 첫 번째 값은

it->first로 써야 하고

두 번째 값은

it->second로 써야 한다.

 

왜냐면 주소여서..!!!

 

 


 

그럼 인지 씨가 말하던 답은 뭐였을까?!

 

 

max_element

"제일 큰 수를 찾아주는 정찰병"

 

배열 또는 벡터를 시작부터 끝까지 쭉 훑고

가장 큰 숫자가 있는 곳을 돌려주는 함수

 

include <algorithm>을 써줘야 하고

 

사용은

auto it = max_element(array.begin(), array.end());

 

라고 해줘야 한다.

 

처음부터 끝까지 중에 가장 큰 숫자의 위치를

it에 넣어주세요!

 

그다음에 it을 구했으니 answer에 넣어야 하는데,

 

넣을 땐

숫자와 인덱스를 넣어줘야 한다.

 

숫자는

*it라고 해서 가리키는 곳의 내용을 나타낸다.

 

 

그러면 인덱스는?

가장 큰 숫자가 있는 위치에서 배열의 맨 처음을 빼면 된다.

처음 위치부터 몇 칸 떨어져 있나?

 

그래서 it - array.begin(); 해주면 된다.

 

 


 

 

 

 

.

 

.. 어려웠는데 1점이라니..

max_element에 대해 배웠다.

 

이터레이터인것을 잊지 말자!