1181_단어정렬
본문 바로가기
알고리즘 최종 (단계별)/0.init

1181_단어정렬

by KyeongMin 2023. 6. 12.
728x90
반응형

문제 링크

https://www.acmicpc.net/problem/1181

문제 설명

  • 알파벳 소문자로 이루어진 N개의 단어를 조건에 따라서 정렬하는 프로그램을 만드는것
    • 길이가 짧은것 부터, 같은 경우 사전 순정렬
    • 중복 없이

중복제거 하는 경우 소스코드

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(const string &u, const string &v) {
	if (u.size() == v.size()) {
		return u < v;
	}
	else {
		return u.size() < v.size();
	}
}
int main() {
	int N;
	cin >> N;
	vector<string> words(N);
	for (int i = 0; i < N; i++) {
		cin >> words[i];
	}
	sort(words.begin(), words.end(),cmp);
	words.erase(unique(words.begin(), words.end()), words.end());

	for (int i = 0; i < words.size(); i++) {
		cout << words[i]<<'\\n';
	}
}

출력하면서 중복제거하는 경우

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(const string &u, const string &v) {
	if (u.size() == v.size()) {
		return u < v;
	}
	else {
		return u.size() < v.size();
	}
}
int main() {
	int N;
	cin >> N;
	vector<string> words(N);
	for (int i = 0; i < N; i++) {
		cin >> words[i];
	}
	sort(words.begin(), words.end(),cmp);
	//words.erase(unique(words.begin(), words.end()), words.end());

	for (int i = 0; i < words.size(); i++) {
		if(i==0 || words[i]!=words[i-1])
		cout << words[i]<<'\\n';
	}
}

차이점 (알아두면 좋은 것)

//1 
words.erase(unique(words.begin(), words.end()), words.end());

//2
	for (int i = 0; i < words.size(); i++) {
		if(i==0 || words[i]!=words[i-1])
		cout << words[i]<<'\\n';
	}
  • unique 함수를 쓰거나
  • 출력시 중복을 제거하능 방법임
728x90
반응형

'알고리즘 최종 (단계별) > 0.init' 카테고리의 다른 글

9935_문자열폭발  (0) 2023.06.20
1236_성지키기  (0) 2023.06.16
백준 1076 저항  (0) 2023.06.11

댓글