프로그래머스
문자열 내 마음대로 정렬하기
업데이트 :: 2018.09.11
문제
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
코드
1차풀이
public class Programmers_6 { public String[] solution(String[] strings, int n) { // strings range - 1 ~ 50 // strings element - 1 ~ 100 // == 버블정렬 == int range = strings.length - 1; for(int i=0; i<range; i++) { for(int j=0; j<(range)-i; j++) { if(compareString(strings[j], strings[j+1], n, n)) { swapString(strings, j, j+1); } } } return strings; } public boolean compareString(String a, String b, int n, int now) { if(a.charAt(now) > b.charAt(now)) return true; else if(a.charAt(now) == b.charAt(now)) { int next = n == now ? 0 : ++now; if(n == next) next++; return compareString(a, b, n, next); } else { return false; } } public void swapString(String[] strings, int a, int b) { String temp = strings[a]; strings[a] = strings[b]; strings[b] = temp; } }
예제
공간복잡도를 늘린 예제 (발상의전환)
class Solution { public String[] solution(String[] strings, int n) { String[] answer = {}; ArrayList<String> arr = new ArrayList<>(); for (int i = 0; i < strings.length; i++) { arr.add("" + strings[i].charAt(n) + strings[i]); } Collections.sort(arr); answer = new String[arr.size()]; for (int i = 0; i < arr.size(); i++) { answer[i] = arr.get(i).substring(1, arr.get(i).length()); } return answer; } }
Created by MoonsCoding
e-mail :: jm921106@gmail.com
반응형
'CS > 프로그래머스' 카테고리의 다른 글
문제 // Programmers // LEVEL1 // String // 문자열 내림차순으로 배치하기 // Java (0) | 2018.09.11 |
---|---|
문제 // Programmers // LEVEL1 // String // 문자열 내 p와 y의 개수 // Java (0) | 2018.09.11 |
문제 // Programmers // LEVEL1 // Array & Math // 두 정수 사이의 합 // Java (0) | 2018.09.11 |
문제 // Programmers // LEVEL1 // Array // 나누어 떨어지는 숫자 배열 // Java (0) | 2018.09.11 |
문제 // Programmers // LEVEL1 // Array // 같은 숫자는 싫어 // Java (0) | 2018.09.11 |