BOJ - 단어 정렬 1181

2024. 12. 4. 22:55·코딩테스트
반응형

 

해결방법

sort 메서드를 이용하여 단어를 정렬하는데, 정렬 방법을 따로 만들어서 정렬을 해주었다.

내 방식은 dicSort()라고 하는 메서들를 정의하는 것이었는데, 단어의 길이가 같다면 단어를 아스키 코드순으로 정렬하고, 다르다면 길이가 긴쪽이 뒤로 가도록 만드는 방법이었다.

 

그런데 여기까지만 하고 제출했더니 답이 틀렸다고 나왔다.

 

어째서일까 생각을 했었는데, 곰곰히 생각해보니 중복된 단어를 제거하지 않은 것이었다.

erase() 메서드를 이용하여 중복된 단어를 지우는 과정을 추가해주면 정답이 된다.

 

정답 코드

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool dicSort(const string& a, const string& b)
{
	if (a.length() == b.length())
		return a < b; 

	return a.length() < b.length();
}

int main()
{
	int N;

	cin >> N;

	vector<string> Word(N);

	for (int i = 0; i < N; i++)
	{
		cin >> Word[i];
	}

	sort(Word.begin(), Word.end(), dicSort);
	Word.erase(unique(Word.begin(), Word.end()), Word.end());

	for (int i = 0; i < Word.size(); i++)
	{
		cout << Word[i] << endl;
	}

	return 0;
}
반응형

'코딩테스트' 카테고리의 다른 글

BOJ - 설탕 배달 2839  (0) 2024.12.13
BOJ - 팰린드롬수 1259  (0) 2024.12.04
BOJ - 생일 5635  (0) 2024.12.02
BOJ - 자작나무가 없소~ 31496  (1) 2024.11.29
BOJ - 행렬 곱셈 2740  (0) 2024.11.25
'코딩테스트' 카테고리의 다른 글
  • BOJ - 설탕 배달 2839
  • BOJ - 팰린드롬수 1259
  • BOJ - 생일 5635
  • BOJ - 자작나무가 없소~ 31496
skajalf
skajalf
skajalf 님의 블로그 입니다.
  • skajalf
    skajalf 님의 블로그
    skajalf
  • 전체
    오늘
    어제
    • 분류 전체보기 (154)
      • UNITY (6)
        • FanGame (6)
        • Portfolio (0)
      • UnReal (0)
      • DirectX (0)
      • 코딩테스트 (114)
      • Programming (34)
        • C C# C++ (9)
        • 디자인 패턴 (0)
        • 자료구조 & 알고리즘 (3)
        • 기타 (22)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    다들 아는거 굳이 적을 이유가 있을까..?
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
skajalf
BOJ - 단어 정렬 1181
상단으로

티스토리툴바