TIL// c++은 main에 등장하는 함수를 main보다 먼저 적어주어야 하나보다. c#은 안그랬던걸로 기억하는데.

c++으로 알고리즘 문제를 풀때 내가 선언한 bool 반환 함수등을 만들어 사용할때, c#에서 프로그램을 만들때는 함수의 선언이 사용되는 곳 위든 아래든 어디에든 작성되있으면 상관이 없었는데, c++은 main에 사용되는 함수를 main밑에다가 작성해놓으니 

이런식으로 선언되지 않았다고 프로그램이 정상작동 되지 않았다. 

c++에서는 미리 선언하고 main을 나중에 쓰도록 하자. 

 

 

+++++++++++++++++++++++++++++++++++++++++

https://cocoon1787.tistory.com/189

 

[C/C++] STL sort 정렬 함수 (오름차순, 내림차순) 예제코드

알고리즘 문제 풀 때 배열이나 벡터를 내림차순으로 정렬해야 하는데 매번 까먹어서 검색을 해왔는데, 블로그로 정리해두면 기억에 오래 남을 것 같아서 포스팅하게 되었습니다. sort 함수를 사

cocoon1787.tistory.com

 

c++ sort가 기본적으로 오름차순 정렬인데, 내림차순 정렬이 필요할때가 있을것이고, 그럴때 저번에 정리를 해둔것 같은데 찾지를 못해서 다시 검색해서 관련된 정보가 잘 모아져있는 블로그를 확인해보고 내용을 첨부한다

 

sort(arr,arr+n,greater<type>()) 형태라는걸 인지하고 다음에도 써먹도록 하자. 

+++++++++++++++++++++++++++++++++++++++++++++

 

next+permutation 을 활용해서 순열을 출력할때, 주로 do while 형태로 사용되는건 알겠는데, 맨 마지막까지 진행한 후에, 

모든 과정을 거치고 for문으로 컨테이너의 각각의 항들을 찍어보면 다시 1,2,3 형태로 바뀌어 있어서 궁금해서 

따로 3 2 1 일때를 찍어보니까, 1 2 3 형태로 바뀌어 있었다. 

 

이런식으로 코드를 작성하고 돌려보니 알 수 있는 것은, next_permutation의 경우는 사전식 배열의 끝에 도달했을때 다시 처음으로 배열해버리고, 그럴 경우 false를 반환한다고 생각하면 될듯 하다. 

이렇게 되면 while문 맨 마지막에서 false를 반환하고, 어떤 식에서 내가 원하던 결과를 도출한건지 알수 없었던 상황이 이해가 된다. 

next_permutation은 하나 다음으로 변환시켜버리고 그리고 다음이 더 가능하냐 안하냐에 따라서 true or false를 반환한다고 기억하도록 하자. 사전식 배열의 맨 마지막에 도달하면 다음은 사전식 배열상 없으니까, 마지막 형태니까 false를 반환한다고 기억하도록 하자. 

 

 

  Comments,     Trackbacks