설명하자면 벡터안에 담겨있는 숫자들을 배열해서 최대의 숫자를 만드는건데,
그거를 각각 string, int, long long으로 리턴하는 함수3개 그리고
2d 벡터안에 있는 1차원 벡터들의 각각의 숫자 배열을 최대치를 구해서 다 더하는 함수 1개
그리고
2d벡터안에서 n개의 1차원 벡터중 k번째 큰 숫자배열최대치를 지닌 1차원 벡터자체를 배출하는 함수 1개,
그니까 이걸 다무조건 instertion algorithm을 응용해서 풀라고 하는건데.
string일떄 질문 한개만 하자면
우선적으로 벡터안에 서로 인접한 숫자를 string화 시켜서 그대로 이어붙였을떄랑
뒤집어서 이어붙였을때, yx>xy면 true를 배출, xy>yx면 false를 배출하는 함수를 만들고
그다음에는 클라스 템플렛 함수를 만들어서 insertion algorithm에서
while(대소비교파트를) 내가 위에 쓴 함수를 저기 bool(* init)(string, string) function pointer가
내가 위에 쓴 true, false배출하는 함수를 불러서 while안에 대신하고
마지막으로 이제 string으로 리턴하는 함수에다가 내가 방금 위에쓴 insertion algorithm대로
응용한 클라스 템플릿 함수를 콜해서 벡터를다 정렬시키고
다 합해서 리턴하는 방식대로 만들었는데
구글 테스트로에 저기 학교에서 준 샘플
[999,639,1,7,58,9]로 구글 테스트 함돌려봤는데
벡터 범위가 out of range라카는데
도대체 어디서 틀린지 모르겠음
https://www.acmicpc.net/problem/16496
이거랑
같은거 같은데 관련 글 한번 찾아봐
찾아봤는데 다들 insertion말고 딴 알고리즘을 쓴거 같아서
같을때 빠졌네
cpt 에 대소 비교는 되어있는데 == 인 경우가 없음 999랑 9에서 터지는거 같은데 한번 고쳐봐
같을떄 처리 안해서 터지나 싶었는데 [1,2,3,4,5,6] 했는데도 vector out of range이러며 터짐
내가 논리 코드 자체가 잘못되었나 싶어서 AI한태 insertion sort응용해서 짜보라고 했는데 심지어 나랑 아예 똑같음
눈으로 봐야해서 조금만 기다려줄래? 나도 엄청 잘하는 편은 아니라서 좀 걸림
봐주면 정말 감사하겠음
문제는 잘 모르겠는디 34번째 while 문 조건에서 j>=0 을 앞쪽에 써야하지 않을까
아 그러네 -1부분에서 outofbound 나올듯
순서가 중요한거임?
ㅇㅇ 순차적으로 처리되고 and는 0나온 순간부터 뒷부분 절삭됨
아 해결되었음. 아 정말 두분다 감사함.
근데 궁금한게 0나오면 뒷부분 절삭된다는데 그러면 절삭안되게 0을 뒤로 해야하는거 아님??
and니깐 둘중 하나 false면 둘다 false지 저 경우는 index를 판정하고 뒤에 메모리 접근을 해야지 그렇게 안하면 잘못된 메모리 영역에 접근하니깐 outofbound가 나오는거임
만약에 뒷부분이 절삭이 안됐으면 저건 조건문 2개 써서 풀어야 할 문제 였을거임
j범위가 0부터 7이라고 하면은, 8이나 9인 상태에서 and 뒤에 부분을 접근하니까 터지다는거네
이해함. 근데 i가 0나오면 절삭되는거 아님?? j가 0이면 한번의 비교는 남았다는거라 while한번은 돌아갈건데
j >= 0에서 j = 0 일 때 사이클 한번 더 굴러가고 그때 j = -1 되는데 한번 더 굴러갈 때 음수 인덱스 참조해서 터지는거임
터진는건 아니고 while이 멈추는거 아님?
j가 -1이 되니까 마지막에 arr[j+1]-temp 일떄 arr[0]을 참조하는데
어쩄든 해결해주고 설명도 잘해줘서 감사를 표함.
아까는 앞에 array[-1]이라 오류 나는거라고 파이썬이면 맨 뒷부분 참조하는데 이건 c++이잖아
그리고 이런 문제는 while보다는 뒷부분도 for문 쓰는게 outofbound 예방하는데 좋음