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

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ygreenb

yellowgreenblue

Algorithm & Data Structure/프로그래머스

[Java] 프로그래머스 : 문자열 내림차순으로 배치하기 (feat. String <-> char[])

2022. 1. 31. 06:00

 

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

 

코딩테스트 연습 - 문자열 내림차순으로 배치하기

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로

programmers.co.kr

풀이

String -> char[]

char[] ch = str.toCharArray();

char[] -> String

1. 단순히 (+) 연산

String은 불변객체라 String 객체와 String 객체를 더하는(+) 행위는 메모리 할당과 메모리 해제를 발생시켜 많아질수록 성능이 떨어진다.

String str = "";
for(char c:ch)
	str += c;

2. StringBuilder.append()

 StringBuilder은 기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적다. 확실히 코드를 수정한뒤에 시간이 단축됨을 확인할 수 있었다. Stringbuilder에서 문자열을 더하는 함수는 append()이다.

StringBuilder sb = new StringBuilder();
for(char c : ch) {
       sb.append(c);
}
String str = sb.toString();

// 한줄로 끝내기
String str = new StringBuilder(new String(c)).toString();

3. String.valueOf()

String str = String.valueOf(ch);

 

알고리즘

String을 char[] 타입으로 변환한 뒤 내림차순으로 정렬해준다. (큰거부터 작은순으로 정렬)

아스키코드로 정렬하기 위해 '0'을 빼주는 연산을한다.

마지막으로 다시 char[] 을 String 타입으로 변환 후 return 해준다.

class Solution {
    public String solution(String s) {
        String answer = "";
        char[] c = s.toCharArray();

        for(int i=0;i<c.length;i++){
            for(int j=i;j<c.length;j++){
                if(c[i]<c[j]){
                    char tmp=c[i];
                    c[i]=c[j];
                    c[j]=tmp;
                }
            }
        }
        
		return String.valueOf(c);
    }
}

 

저작자표시 (새창열림)

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

[Java] 프로그래머스 : 이상한 문자 만들기  (0) 2022.02.07
[Java] 프로그래머스 : 문자열 내 마음대로 정렬하기  (0) 2022.02.07
[Java] 프로그래머스 : 서울에서 김서방 찾기  (0) 2022.01.31
[Java] 프로그래머스 : 문자열 내 p와 y의 개수  (0) 2022.01.31
[Java] 프로그래머스 : 가운데 글자 가져오기  (0) 2022.01.31
    'Algorithm & Data Structure/프로그래머스' 카테고리의 다른 글
    • [Java] 프로그래머스 : 이상한 문자 만들기
    • [Java] 프로그래머스 : 문자열 내 마음대로 정렬하기
    • [Java] 프로그래머스 : 서울에서 김서방 찾기
    • [Java] 프로그래머스 : 문자열 내 p와 y의 개수
    ygreenb
    ygreenb
    개발공부기록장

    티스토리툴바