ygreenb
yellowgreenblue
ygreenb
전체 방문자
오늘
어제
  • TIL (130)
    • Algorithm & Data Structure (70)
      • 이론 (4)
      • 프로그래머스 (54)
      • 백준 (12)
    • JAVA (4)
    • Android Studio (9)
    • Database (1)
    • WEB (25)
      • HTML+CSS (7)
      • Javascript (5)
      • React (11)
      • Django (1)
      • Node.js (1)
    • Computer Vision (13)
    • Git (8)

블로그 메뉴

  • HOME
  • TAG
  • GITHUB

공지사항

인기 글

태그

  • Queue
  • kotiln
  • 프로그래머스
  • getOrDefault
  • Arrays.sort()
  • greedy
  • React
  • DP
  • dfs
  • 코틀린
  • sort
  • Comparator
  • git bash
  • 깃허브
  • compareTo()
  • 백준
  • stack
  • PriorityQueue
  • git
  • 프로그래머스 Lv.2
  • 안드로이드
  • entrySet
  • Android
  • 스택/큐
  • 해시
  • HashMap
  • BFS
  • 깃
  • reactjs
  • java

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ygreenb

yellowgreenblue

Algorithm & Data Structure/프로그래머스

[Java] 프로그래머스 : 문자열 내 마음대로 정렬하기

2022. 2. 7. 05:51

https://programmers.co.kr/learn/courses/30/lessons/12915?language=java 

 

코딩테스트 연습 - 문자열 내 마음대로 정렬하기

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

programmers.co.kr

 

풀이

1. strings 배열의 각 배열의 n번째 원소를 비교해 정렬 => charAt()
2. n번째 원소가 같을 경우 사전순으로 앞선 문자열을 앞쪽에 위치 =>compareTo()

charAt()는 인자의 위치에 있는 char값을 반환하는 String 클래스의 메소드이다.

=> 2중 for문을 사용해서 strings[i].charAt(n) 와 string[j].charAt(n)을 비교해 앞 원소의 n번째 원소가 더 클 경우 i번째와 j번째 strings 원소의 위치를 바꿔주었다. (가장 처음 원소부터 정렬함)

compareTo()는 두 개의 문자열을 비교하는 메소드지만 equals()나 == 와 다르게 어떤 문자가 사전적인 순서로 앞에 있는지도 리턴해주기 때문에 리스트를 정렬하기에 용이하다. 리턴값에 따른 결과는 다음과 같다.

  • 0 : 두 개의 문자열이 동일
  • 양수 : compareTo()를 호출하는 객체가 인자보다 사전적으로 순서가 앞설 때
  • 음수 : 인자가 객체보다 사전적으로 순서가 앞설 때

=> n번째 원소가 같을 경우엔 compareTo()로 strings[i]와 strings[j]를 비교해 정렬한다.

class Solution {
    public String[] solution(String[] strings, int n) {
        for(int i=0; i<strings.length-1;i++){
            for(int j=i+1; j<strings.length;j++){
                if(strings[i].charAt(n)>strings[j].charAt(n)){
                    String tmp = strings[i];
                    strings[i] = strings[j];
                    strings[j] = tmp;
                }else if(strings[i].charAt(n)==strings[j].charAt(n)){
                    if(strings[i].compareTo(strings[j])>0){
                        String tmp = strings[i];
                        strings[i] = strings[j];
                        strings[j] = tmp;
                    }
                }
            }
        }
        return strings;
    }
}
저작자표시 (새창열림)

'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글

[Java] 프로그래머스 : 3진법 뒤집기  (0) 2022.02.07
[Java] 프로그래머스 : 이상한 문자 만들기  (0) 2022.02.07
[Java] 프로그래머스 : 문자열 내림차순으로 배치하기 (feat. String <-> char[])  (0) 2022.01.31
[Java] 프로그래머스 : 서울에서 김서방 찾기  (0) 2022.01.31
[Java] 프로그래머스 : 문자열 내 p와 y의 개수  (0) 2022.01.31
    'Algorithm & Data Structure/프로그래머스' 카테고리의 다른 글
    • [Java] 프로그래머스 : 3진법 뒤집기
    • [Java] 프로그래머스 : 이상한 문자 만들기
    • [Java] 프로그래머스 : 문자열 내림차순으로 배치하기 (feat. String <-> char[])
    • [Java] 프로그래머스 : 서울에서 김서방 찾기
    ygreenb
    ygreenb
    개발공부기록장

    티스토리툴바