TIL | 22/07/21

개뉸·2022년 7월 21일
0

TIL

목록 보기
5/6
post-thumbnail

3번. 같은 단어는 싫어

배열 arr와 정수 n이 주어집니다. 배열 arr의 각 원소는 문자열로 이루어져 있습니다. 이때, 배열 arr에서 중복되는 단어는 전부 제거하려고 합니다. 단, 제거된 후 남은 단어들을 반환할 때는 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다.
예를 들어 strings가 ["brush", "sun", "brush", "bed", "car"]이고 n이 1이면 중복을 제거한 배열인 ["sun", "bed", "car"]에서 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
제한 조건
strings는 길이 1 이상, 50이하인 배열입니다.
strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
모든 strings의 원소의 길이는 n보다 큽니다.
인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
입출력 예
["brush", "sun", "brush", "bed", "car"]
1
["car", "bed", "sun"]["banana", "cat", "car", "apple", "banana", "banana"]
0
["apple","car","cat"]
지정 입력값
["coke", "water", "glass", "dog", "dog", "yogurt", "vitamin"]
2
["glass", "yogurt", "coke", "vitamin", "water"]

내가 푼 풀이

//8기 C반 9조 이동건 2022.07.21 목요일 알고리즘 테스트 3번 문제 : 같은 단어는 싫어
import java.util.*;
public class Main {
    public static void main(String[] args) {
        String[] arr = {"banana", "cat", "car", "apple", "banana", "banana"};
        ArrayList<String> list = new ArrayList<String>();
        int n = 0;

        Arrays.sort(arr); //우선 알파벳 순으로 정렬

        for (int i = 0; i < arr.length; i++) {//arr 를 리스트로 만들기
            list.add(arr[i]);
        }

        for (int i = 0; i < arr.length; i++) { //중복 단어 제거하는 for문 시작
            for (int j = i+1; j < arr.length; j++) {
                if (arr[i].equals(arr[j])) { //중복 찾았다
                    list.remove(arr[i]);
                    list.remove(arr[j]);
                }
            }
        }

        String[] temp = list.toArray(new String[list.size()]); //리스트를 배열로 다시 전환
        

        String[] temp2 = new String[temp.length];
        for (int i = 0; i < temp.length; i++) { //n번째 알파벳 순으로 정렬하기 위한 사전 준비 for문 시작
            temp2[i] = temp[i].charAt(n) + temp[i];
        }

        Arrays.sort(temp2); //n번째 알파벳 순으로 정렬

        for (int i = 0; i < temp.length; i++) { //정렬후 앞글자 붙인거 다시 제거 for문 시작
            temp2[i] = temp2[i].substring(1,temp2[i].length()); //두번째 글자부터 끝까지만 출력
        }

        System.out.println(Arrays.toString(temp2));

    }
}

0개의 댓글