문제 설명
단어를 입력 받고 입력 받은 단어를 크기 순으로, 단어 순으로 출력한다.
입력
- 첫째 줄: 단어 개수 N
- 둘째 줄~: 단어
출력
단어를 크기 순(1순위), 단어 순(2순위)로, 같은 단어가 여러 개인 단어는 한 번만 출력
알고리즘 분류
풀이 방법
입력 받는 단어를 배열에 저장하고 배열을 sort한 뒤, 단어 길이를 1에서부터 최대 단어 길이까지 늘려가며 같은 단어 길이를 가지는 배열 요소를 출력한다.
JAVA
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int N=Integer.parseInt(br.readLine());
String[] arr=new String[N];
int max=0;
for(int i=0; i<N; i++) {
arr[i]=br.readLine();
if(arr[i].length()>max) max=arr[i].length();
}
Arrays.sort(arr);
for(int k=1; k<=max; k++) {
for(int j=0; j<N; j++) {
if(arr[j].length()==k) {
if(j==0 || (j>0 && !(arr[j].equals(arr[j-1])))) System.out.println(arr[j]);
}
}
}
}
}
변수
타입 | 변수명 | 설명 |
int | N | 단어의 개수 |
String[] | arr | 단어 배열 |
int | max | 단어 최대 길이 |
코드 설명
- N에 입력 받을 단어의 개수 저장
- 단어를 입력 받아 arr에 저장
- 입력 받은 단어 길이가 max보다 클 경우, max를 현재 단어 길이로 재저장
- arr sort
- 단어 길이(k)를 1에서부터 max까지 늘려가면서 arr 요소 중 k와 같은 값일 때 출력
어려웠던 점
- 배열에서 이전 인덱스 요소와 값이 다른 값만 출력하기 위해
arr\[j\].equals(arr\[j-1\])
를 사용하였는데, 인덱스에러를 방지하기 위해 사용한j>0
때문에 첫번째 요소를 출력시키지 못하는 문제가 발생하였음
새로 알게 된 점
- 배열 내 요소끼리 비교할 때도 equals() 사용
'알고리즘' 카테고리의 다른 글
[Python3] 백준 1149 - RGB거리 (1) | 2022.03.03 |
---|---|
[Python3] 백준 2877 - 4와 7 (2) | 2022.03.02 |
[Python / Java] 백준 10757 - 큰 수 A+B (2) | 2022.02.19 |
[Python] 백준 1325 - 효율적인 해킹 (1) | 2022.02.11 |
[Java] 백준 2941 - 크로아티아 알파벳 (4) | 2022.02.11 |