[JAVA-6]프로그래머스 1단계 : 문자열 내 마음대로 정렬하기

이지연·2020년 12월 19일
0

[JAVA]프로그래머스

목록 보기
6/9

https://programmers.co.kr/learn/courses/30/lessons/12915

문제

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다.

제한사항

  • strings는 길이 1 이상, 50이하인 배열입니다.
  • strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
  • strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
  • 모든 strings의 원소의 길이는 n보다 큽니다.
  • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.

문제thinking

간단히 사용된 함수 설명
charAt():문장중에 인덱스 위치에 해당되는 문자 추출하는 함수이다. if문이나 for문, switch문을 활용하면 좋다.

substring():문자열 자르기 함수이다. 해당되는 문자열을 추출하는것에 추가하여 원하는 만큼 범위의 문자를 가져올 수 있는 명령어. 이외에도 split 함수가 있는데, 주어진 문자로 분리하여 배열에 저장할 때 사용된다.

해당 단어인 sun에서 n(배열 인덱스 번호:1)자리를 charAt()으로 뽑고 해당 단어를 더하기를 해줬다.

그러면 다음과 같이 앞에 n의 자리에 문자가 앞에 있고, 정렬을 해준다.

[usun]
[usun, ebed]
[usun, ebed, acar]

그리고 get()으로 해당 단어마다 substring을 이용해 1번째 자리의 문자를 잘라주었습니다.

여기서 핵심은 charAt(), substring()입니다!!

문제 풀이

import java.util.ArrayList;
import java.util.Collections;

class Solution {
    public String[] solution(String[] strings, int n) {
        String[] answer = new String[strings.length];        
        
        ArrayList<String> list = new ArrayList<String>();
        for(int i=0; i<strings.length; i++){
        	list.add(strings[i].charAt(n)+strings[i]);
        	System.out.println(list);
        }
        Collections.sort(list);
        
        for(int j=0; j<=list.size();j++) {
        	answer[j] = list.get(j).substring(1);
        	System.out.println(answer[j]);
        }
        
        return answer;
    }
profile
Everyday STEP BY STEP

0개의 댓글