SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
이 문제는 Comparator를 사용하면 쉽게 풀 수 있는 문제이다.
Java의 경우 Set으로 중복되는 문자열을 제거했고,
C++의 경우 Unique 함수를 사용해 중복되는 문자열을 제거했다.
<JAVA>
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
class MyStringComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
if (o1.length() == o2.length()) {
return o1.compareTo(o2);
} else {
if (o1.length() < o2.length()) {
return -1;
} else
return 1;
}
}
}
class Solution {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
Set<String> s = new HashSet<>();
for (int t = 1; t <= T; ++t) {
s.clear();
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; ++i) {
s.add(br.readLine());
}
List<String> list = new ArrayList<>();
for (String a : s) {
list.add(a);
}
MyStringComparator myStringComparator = new MyStringComparator();
Collections.sort(list, myStringComparator);
System.out.println("#" + t);
for (int i = 0; i < list.size(); ++i) {
System.out.println(list.get(i));
}
}
}
}
<C++>
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int T, N,i,len;
vector<string> s;
string temp;
bool a(string s1,string s2)
{
if (s1.length() == s2.length())
{
return s1 < s2;
}
else
{
return s1.length() < s2.length();
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> T;
for (int testcase = 1; testcase <= T; ++testcase)
{
s.clear();
cin >> N;
for (i = 0; i < N; ++i)
{
cin >> temp;
s.push_back(temp);
}
sort(s.begin(), s.end(),a);
s.erase(unique(s.begin(), s.end()), s.end());
cout << "#" << testcase<<"\n";
len = s.size();
for (i = 0; i < len; ++i)
{
cout << s[i] << "\n";
}
}
}
'알고리즘 > SWEA' 카테고리의 다른 글
6782. 현주가 좋아하는 제곱근 놀이 (0) | 2019.10.15 |
---|---|
5550. 나는 개구리로소이다 (0) | 2019.10.08 |
7396. 종구의 딸이름 짓기 (0) | 2019.10.08 |
3349. 최솟값으로 이동하기 (0) | 2019.10.07 |
1249. 보급로 (0) | 2019.10.07 |