나 개발자 진짜 되냐?

바킹독 0x02 문제7 - 세수정렬 / 백준 2557번 본문

C++을 시작해봐요!/알고리즘을 공부해봐요!

바킹독 0x02 문제7 - 세수정렬 / 백준 2557번

Snow Rabbit 2025. 6. 17. 02:01

 

세수 정렬..

정렬..

사실 이 정렬이라는 거에 큰 힌트를 얻었어야 했는데

그냥 세 숫자를 어떻게 할까 만 고민하다가

결국 답지를 본 문제이다.

문제 푸는 방법은 두 가지라고 한다.

 

함께 보자


1. for문 따위 쓰지 않는다.

 

생각해 보니 나쁘지 않은 거 같다.

a , b, c에 숫자를 넣고

d e f를 만들어서

가장 큰 숫자를 d에 넣고

가장 작은 숫자를 f에 넣고

나머지 한 숫자를 그 큰 거와 작은 것을 더해서 전체에서 뺀 값으로 쓰게 된다.

 

참 신기하다. 똑똑하다.. 천재다!!

 

여기서 알아야 할 건 max와 min!

이미 지원해 주는 것이기 때문에 자주 공부해서 사용해 보자!

 

max ( arr ) 은 안된다고 한다.

그래서 배열로 쓸 때는 max_element라고 써야 한다고 한다.

 

int arr [3] = {a, b, c};
int max_val = *max_element(arr, arr + 3);

 

앞에 별을 붙여야지만 최댓값 자체를 얻을 수 있다고 한다.

배열에서 가장 중요한 것이 값 자체인지 주소인지 봐야 하기 때문에

신경 써줘야 하는 부분이다.

 

벡터여도 똑같은 함수를 사용한다.

max와 max_element 두 종류가 있다는 사실을 기억하자!

 

 

2. 출력을 위해서 for문을 어쩔 수 없이 쓰자. or 함수를 쓰면 되잖아?

 

정렬이라는 말에 힌트를 받았어야 했는데 sort라는 친구가 있다.

 

 

정돈 후,

출력하세요!

arr부터 arr+3까지 는 0부터 +3칸까지라는 뜻!

 

3. 지 선생이 그러던데 벡터도 좋대!

 

 

 

vector <int>로 선언

이름은 v이고 (3)은 3개라는 뜻!

 

백터의 첫 번째를 뜻할 땐

대괄호! []

그래서 v [1] 이렇게 쓴다.

 

sort에서 쓸 때가 중요한데

배열로 받을 땐 그냥 arr0번부터 arr+3 이렇게 했는데

그 이유는 배열이 포인터이기 때문이라고 한다!

 

여기는 시작과 끝이라는 또 다른 용어가 존재했다.

v. 하니 바로 뜨더라!

대신 함수? 여서 그런지 괄호를 사용해야 했다.

 

푸는 방식이 이렇게 많으면,,, 어쩌자고요,,

원래 모든 코테에는 답이 있진 않지만..

참 알다가도 모를 정도로 어렵다.