인프런 커뮤니티 질문&답변

송지웅님의 프로필 이미지
송지웅

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

4-A

4-a 왜 틀렸는지 궁금합니다

작성

·

176

·

수정됨

0

http://boj.kr/5b42789344b749769d5371b7e76dfb10

 

안녕하세요 큰돌님 !

강의 너무 재밌게 잘 듣고 있습니다.

문제해설대로 map을 사용하는게 좋은 방법이란걸 깨달았지만 해설을 듣기전 혼자 풀었을때 작성한 코드인데요.

저는 전역으로 벡터를 만들어서 더 좋은 조건(사전 순으로 빠른)의 벡터가 만들어졌을 시 비교하여 전역 벡터로 할당해주는 방식으로 짜보았는데요.

해당문제를 검색해보며 여러 테스트케이스를 해봐도 맞았는데 제출은 틀렸다고 나옵니다 .. ㅠㅜㅠㅜ

어떤 반례가있는지 궁금합니다.

답변 2

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 지웅님 ㅎㅎ

			if (v.size() > temp.size()){
				for (int l = 0; l < temp.size(); l++) {
					if (v[l] > temp[l])
						v = temp;
				}
			}

이렇게 되면 1 3 4 / 1 2 이런 경우 1 3 4 로 대체되지 않을까요?

				for (int l = 0; l < v.size(); l++) {
					if (v[l] > temp[l])
						v = temp;
				}

그리고 이경우도 else라면 무조건 이렇게 대체되고 break;도 안하는데요ㅎㅎ

더 오름차순인지를 확인하고 대체하는게 맞는 로직인 것 같습니다.



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

송지웅님의 프로필 이미지
송지웅
질문자

안녕하세요 답변 듣고 다시 생각해보니 v벡터와 temp벡터에서 오름 차를 비교했더라도 계속 for문이 진행되는 둥 허점이 많았던거같습니다. 답변듣고 오름차순을 비교하는 로직을 다시 짜서

for (int l = 0; l < temp.size(); l++) {
	if (v[l] == temp[l])continue;
	else {
		if (v[l] > temp[l]) {
			v = temp;
			break;
		}
		else
			break;
	        }
        }
}

정답처리했습니다 !! 감사합니다!!

0

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용에 대해 직접적으로 답변드릴 정보가 제공한 정보 내에는 없음을 알려드립니다.

하신 질문과 관련하여 구체적인 코드 리뷰나 반례 제공이 필요하시다면, 강의 관련 내용은 해당 강의의 커뮤니티 질문&답변 게시판에 질문해주시면 강사님께서 확인하시고 답변해 주실 거예요.

강의를 재밌게 듣고 계신다니 정말 다행입니다. 문제 해결에 있어 작은 도움이라도 될 수 있기를 바랍니다. 감사합니다.

송지웅님의 프로필 이미지
송지웅

작성한 질문수

질문하기