이전 이야기 ....
2021.05.09 - [알고리즘 스터디] - [백준 알고리즘] 11650 좌표 정렬하기 (21.05.09)
[백준 알고리즘] 11650 좌표 정렬하기 (21.05.09)
오늘은 바로바로 정렬 입니다요!!!! 그래서 오늘의 문제는 백준 11650번 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,00
sleecode.tistory.com
다음 정렬 문제는 !!!!!
백준 1181 단어 정렬
입력
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
출력
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.
문제 사이트 : www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
여기서 핵심 포인트!!!
- 정렬을 어떻게 할 것인가
- 중복 확인을 하는 방법!!!!!
직접 작성해본 소스코드 및 간단한 설명
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
static int N;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
String[] word = new String[N];
for(int i = 0; i< N; i++) {
word[i] = sc.next();
}
Arrays.sort(word, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if(s1.length() == s2.length()) {
return s1.compareTo(s2);
}else {
return s1.length() - s2.length();
}
}
});
System.out.println(word[0]);
for(int i = 1; i< N; i++) {
if(!word[i].equals(word[i-1]))
System.out.println(word[i]);
}
}
}
간단히 설명을 해보자면 ....
이전 글의 두 번째 방법과 비슷한 방법을 차용했다!!!!
바로 기존의 것을 사용하는 것!!!!!!!!!!!!!
- 단어를 String [] 로 받아오기
- Arrays.sort() 함수 사용하기
- 길이가 같을 때만, 사전식으로 단어 비교하기
- 첫 번째 요소 출력해준 후, 이전과 비교해서 중복이 아닌 것만 출력해주기!!
중복 체크는 처음 받을 때부터 해주는 방법도 있다!!!
백준 알고리즘
채점 결과!!!
다행히 맞았습니다!!
스터디를 하며 얻은 것들
- 입력받을 때부터 중복 확인 가능!!
- 중복 확인 시에 'i!=0' 조건을 넣는 방법도 있다
- c/c++에서 string의 size보다는 length를 사용하는 것이 더 정확하다
- python에서 set을 사용하면 처음부터 중복 없이 받아올 수 있다!!
'스터디 > 알고리즘 스터디' 카테고리의 다른 글
[백준 알고리즘] 1003 피보나치 함수 (21.05.16) (0) | 2021.05.16 |
---|---|
[백준 알고리즘] 1431 시리얼 번호 (21.05.09) (0) | 2021.05.09 |
[백준 알고리즘] 11650 좌표 정렬하기 (21.05.09) (0) | 2021.05.09 |
[백준 알고리즘] 2178 미로 탐색 (21.05.02) (0) | 2021.05.02 |
[백준 알고리즘] 11724 연결 요소의 개수 (21.05.02) (0) | 2021.05.02 |