inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

2 - G 질문있습니다.

182

전성근

작성한 질문수 3

0

빈도정렬 문제를 풀면서 수열에서 등장하는 횟수가 같은 숫자는

먼저 출력하게 하기 위해 첨부한 코드와 같이 if문에서 <=로 비교하는 대신

unordered_map에서 <로 비교를 하여 코드를 작성하였습니다.

백준에 있는 예제 입력들은 모두 정답과 같이 나오는데 

막상 채점을 시작하면 틀렸다고 나오게 됩니다.

물론 강의영상에서는 큰돌님이 커스텀 우선순위 비교를 이용하였지만

다음과 같은 방법으로도 문제풀이가 가능할 것 같아 질문을 드리고 싶습니다.

이러한 방법이 타당한 방법인지 궁금합니다.

또한 타당한 방법이라면

제 코드의 잘못된 부분이 어느부분인지 궁금합니다.

감사합니다.

 

#include <bits/stdc++.h>
using namespace std;
unordered_map<string, int> _map;

int main() {
	int n, c;
	cin >> n >> c;

	string input;
	for (int i = 0; i < n; i++) {
		cin >> input;
		_map[input]++;
	}

	while (!_map.empty()) {
		int temp = 0;
		string temp_str;
		for (auto element : _map) {
			if (temp < element.second) {
				temp = element.second;
				temp_str = element.first;
			}
		}

		for (int i = 0; i < temp; i++) {
			cout << temp_str << ' ';
		}
		_map.erase(temp_str);

	}
}

 

코테 준비 같이 해요! C++

답변 1

0

큰돌

안녕하세요. 전성근님ㅎㅎ

해당코드는 "unordered_map에서 들어오는 순서대로 정렬"되어있고 이 "기본전제"를 바탕으로 동작하는 코드가 아닌가요? 

unordered_map은 "순서가 정렬이 되지 않는" 자료구조입니다. 그렇기 때문에 기본전제 자체가 틀리기 때문에제출하면 틀리는 것입니다. 하지만 예제는 맞을 수 있죠. 그건 운이 좋은 겁니다. 어떠한 경우의 수에서는 성근님이 예상하는 대로 정렬이 되어서 맞는 것이죠. 하지만 수많은 테스트케이스를 통과해야 맞다고 뜨는 "제출"에서는 당연히 틀리죠. "기본전제"가 올바르지 않은 코드이기 때문입니다.  

또 질문사항있으시면 언제든 말씀 부탁드립니다. 

감사합니다. 

강사 큰돌 올림. 

0

전성근

감사합니다 큰돌님!

1-E질문입니다!

0

513

2

3-L 틀린 부분 피드백 부탁드립니다.

0

815

2

1-A문제 순열재귀함수 질문입니다.

0

380

1

1-A 일곱난쟁이문제입니다

0

454

1

문제 풀 때 방향성에 대해

0

796

1

맥에서 vs code로 실행 관련 질문입니다

0

520

1

17071번 메모리 초과

0

384

1

1-C질문입니다!

0

415

2

2-B BFS 시간초과질문

0

626

2

1-O 13번 라인

0

437

1

6-J 놀이공원 문제 질문

0

379

1

구현관련 질문

0

481

1

강의 교안

0

316

1

실력을 더 올리고나서 강의를 보는 것이 맞을까요?

0

544

1

안녕하세요! 재귀함수에 관해서 질문드립니다

0

534

1

1-K

0

471

2

3-G번 질문있습니다.

1

468

3

3-C 실행 시간 질문드립니다.

0

491

1

4-A 문제 풀이 질문있습니다.

0

589

2

비트마스킹 연산자 "1의 보수" 영문 표기법

0

433

1

격자탐색 문제에서 BFS 시간복잡도 질문드립니다.

0

332

1

3-O go 함수 질문 드립니다.

1

440

2

4-A 출력 질문

0

301

1

1주차 1-O 질문드립니다

0

253

1