๊ฐœ๋ฐœ์ผ์ง€

[Java] charํ˜• ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ, StringBuilder, String → charํ˜• ๋ฐฐ์—ด / ๋ฌธ์ž์—ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ ๋ณธ๋ฌธ

Algorithm

[Java] charํ˜• ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ, StringBuilder, String → charํ˜• ๋ฐฐ์—ด / ๋ฌธ์ž์—ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ

O'mil 2024. 5. 21. 21:36
728x90

๐Ÿ”— ๋งํฌ

๋ฌธ์ž์—ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช…

  • ๋ฌธ์ž์—ด s์— ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ž๋ฅผ ํฐ๊ฒƒ๋ถ€ํ„ฐ ์ž‘์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜๋ผ
    s๋Š” ์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋Œ€๋ฌธ์ž๋Š” ์†Œ๋ฌธ์ž๋ณด๋‹ค ์ž‘์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ.

๐Ÿ‘€ ์˜ˆ์ œ

 

๐Ÿ’ป ์ฝ”๋“œ

import java.util.*;

class Solution {
    public String solution(String s) {
        char[] answer = s.toCharArray();
        
        Arrays.sort(answer);
        
        StringBuilder sb = new StringBuilder(new String(answer));
        
        return sb.reverse().toString();
    }
}
  • toCharArray(): String์„ charํ˜• ๋ฐฐ์—ด๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉ
  • Arrays.sort()์— Collections.reverseOrder()์„ ์‚ฌ์šฉํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฐ”๊พธ๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ charํ˜•์ด๋ฏ€๋กœ ์—๋Ÿฌ๋‚จ
    → StringBuilder์˜ reverse()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋จ.

๐Ÿ“StringBuilder

  • Stringbuilder๋Š” String๊ณผ ๋‹ค๋ฅด๊ฒŒ mutableํ•œ ์„ฑ์งˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ → ๊ฐ’์ด ๋ณ€ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ฌธ์ž์—ด ๋ง์…ˆ์—์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ์— ๋”ํ•˜๋Š” ๋ฐฉ์‹ → ์†๋„ ๋น ๋ฆ„, ๋ถ€ํ•˜ ์ ์Œ
  • StringBuffer์™€์˜ ์ฐจ์ด์ 
    • StringBuffer๋Š” thread-safeํ•˜๋ฏ€๋กœ ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ์—์„œ ๋™์‹œ์— ํ•ด๋‹น ๋ฌธ์ž์—ด์— ์ ‘๊ทผํ•œ๋‹ค๋ฉด ์‚ฌ์šฉ
    • ์•„๋‹ˆ๋ผ๋ฉด StringBuilder ์‚ฌ์šฉ์ด ์„ฑ๋Šฅ์— ์œ ๋ฆฌํ•จ
StringBuilder sb = new StringBuilder();	//๊ธฐ๋ณธ ์ƒ์„ฑ์ž

StringBuilder sb = new StringBuilder(20); //์‚ฌ์ด์ฆˆ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ƒ์„ฑ

StringBuilder sb = new StringBuilder("hello"); //๋ฌธ์ž์—ด์„ ์ธ์ž๋กœ ๋ฐ›์•„ ์ƒ์„ฑ

 

 

๋ฉ”์†Œ๋“œ

๋ฉ”์†Œ๋“œ ๊ธฐ๋Šฅ ์˜ˆ์‹œ
.append() ๋ฌธ์ž์—ด ์ถ”๊ฐ€ sb.append("bbb")
.insert(int offset, String str) offset์œ„์น˜์— str ์ถ”๊ฐ€ sb.insert(2, "ccc")
.replace() ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š” ์ˆซ์ž ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ ๋ฌธ์ž์—ด์„ ๋Œ€์ฒดํ•จ sb.replac e(3, 6, "hi")
.substring(int start, (int end)) ์ธ๋ฑ์‹ฑ.
ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•˜๋‚˜๋ผ๋ฉด ํ•ด๋‹น ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋๊นŒ์ง€,
๋‘๊ฐœ๋ผ๋ฉด ์‹œ์ž‘์ ๊ณผ ๋์  -1๊นŒ์ง€ ์ธ๋ฑ์‹ฑ
sb.substring(5), sb.substring(3, 7)
.deleteCharAt(int index) ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ ๋ฌธ์ž๋ฅผ ์‚ญ์ œ sb.deleteCharAt(3)
.delete(int start, int end) start๋ถ€ํ„ฐ end -1๊นŒ์ง€์˜ ๋ฌธ์ž๋ฅผ ์‚ญ์ œ sb.delete(3, sb.length())
.toString() String์œผ๋กœ ๋ณ€ํ™˜ sb.toString()
.reverse() ํ•ด๋‹น ๋ฌธ์ž ์ „์ฒด๋ฅผ ๋’ค์ง‘์Œ sb.reverse()
.setCharAt(int index, String s) index ์œ„์น˜์˜ ๋ฌธ์ž๋ฅผ s๋กœ ๋ณ€๊ฒฝ  
.setLength(int len) ๋ฌธ์ž์—ด ๊ธธ์ด ์กฐ์ •. 
ํ˜„์žฌ ๋ฌธ์ž์—ด๋ณด๋‹ค ๊ธธ๊ฒŒ ์กฐ์ •ํ•˜๋ฉด ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์›Œ์ง,
ํ˜„์žฌ ๋ฌธ์ž์—ด๋ณด๋‹ค ์งง๊ฒŒ ์กฐ์ •ํ•˜๋ฉด ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋Š” ์‚ญ์ œ
 
.trimToSize() ๋ฌธ์ž์—ด์ด ์ €์žฅ๋œ char[] ๋ฐฐ์—ด ์‚ฌ์ด์ฆˆ๋ฅผ ํ˜„์žฌ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด์™€ ๋™์ผํ•˜๊ฒŒ ์กฐ์ •,
String ํด๋ž˜์Šค์˜ trim()์ด ์•ž ๋’ค ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๊ณต๋ฐฑ ์‚ฌ์ด์ฆˆ ์ œ๊ฑฐํ•จ.
 

 


๐Ÿ“šReference

https://velog.io/@rara_kim/Java-StringBuilder-%EC%82%AC%EC%9A%A9%EB%B2%95

[Java] StringBuilder ์‚ฌ์šฉ๋ฒ•๊ณผ ์ฃผ์š” ๋ฉ”์†Œ๋“œ

 

 

 

 

 

728x90
Comments