나 개발자 진짜 되냐?

백준 C++ 2108번 통계학 ( 정렬 ) 본문

C++을 시작해봐요!/단계문제를 풀어보아요!

백준 C++ 2108번 통계학 ( 정렬 )

Snow Rabbit 2026. 4. 18. 08:18

백준에 이제 정좀 붙였는데

아쉽습니다.

 

class2 마지막 문제입니다.

통계학..

 

이름만 들어도 손이 떨리는군요.

 

하지만 마지막이라고 생각하고 문제를 풀어보겠습니다.

 


 

 

까다롭습니다.

 

세번째줄이 까다롭습니다.

 

일단 pair가 이번에도 필요할 거 같다.

(숫자, 개수) 이렇게 넣을 통 하나 만들어줘 보자.

 

차피 개수니까 카운트만 해주면 되어서

며칠 전에 풀었던 map 문법을 읽고 다시 풀어보기로 했다.

 

map과 unordered_ map의 차이는

map은 정렬하는데 시간은 좀 걸리지만,

맨 끝부터 맨 앞까지 검토가 가능하다고 해서

 

map으로 풀어보았다.

 

음..

세 번째에서 문제가 발생했다.

최빈값 중에서 두 번째로 작은 값..?!

 

그걸 어찌 알지요..

 

처음에는 벡터에 넣어서 sort 이렇게 하려고 했는데..

map도 뭔가 아는 게 부족하고..

무슨 방법이 좋을까...

 

인지 씨를 찾았다.

 

 

헉.. 제가 생각한 게 맞았다고요..?!

 

하지만 뭔가 저 최빈값에서 매우 아주 큰 오류가 발생한다.

 

인지 씨를 찾았다.

이렇게 하면

새롭게 갱신되는 숫자들이 반영된다는 것..!

 

그렇군..

 

수정해 봤다.

 

하지만 결국 이것도 갱신되는 숫자가 다 들어가게 된다..


그래서 for문을 두 개 만들었다.

 

그리고 sort에서 중요했던 게

greater을 넣어서 나는 내림차순으로 만들라 했는데

이게 두 번째로 작은 값이다 보니

그냥 오름차순으로 해야 한다..ㅎ

 

 

자잔..!!

 

마지막에 중요한 건

들어온 숫자가 

1 1 1 1 이면

1이 4개 들어온 거라 최빈값은 맞지만

1 하나만 들어가게 된다

그럼 da_v는 0 한 개 밖에 없는데 두 번째 값을 출력할 수 없으니

예외를 붙여줘야 한다.

 

그리고 처음과 끝은

v.back과 v.front이다.

 

 

end와 begin은 주소값을 가져오는 친구여서

이렇게 쓰면 size가 된다고 한다.

 


 

이렇게 class 2 마지막 문제를 풀었다.

100 퍼를 채워서 뿌듯하다.

 

다음 주부터..

코테 유목민이 되어버린다....

어디로 가야 하오..