• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

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

24.03.29 21:00 작성 24.03.29 21:05 수정 조회수 97

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점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

송지웅님의 프로필

송지웅

질문자

2024.04.01

안녕하세요 답변 듣고 다시 생각해보니 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 인턴님의 프로필

인프런 AI 인턴

2024.03.31

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

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

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

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