Coding Planet

4. ๋‹จ์–ด ๋’ค์ง‘๊ธฐ - StringBulider.reverse()/String.valueOf() / String๊ณผ StringBuilder์˜ ์ฐจ์ด์  ๋ณธ๋ฌธ

๐ŸŽ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/์•Œ๊ณ ๋ฆฌ์ฆ˜

4. ๋‹จ์–ด ๋’ค์ง‘๊ธฐ - StringBulider.reverse()/String.valueOf() / String๊ณผ StringBuilder์˜ ์ฐจ์ด์ 

jhj.sharon 2023. 5. 4. 17:51
๋ฐ˜์‘ํ˜•

1. ๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ

  • ์ฃผ์–ด์ง„ ๋‹จ์–ด๋ฅผ ๋’ค์ง‘์–ด์„œ ๋ฌธ์ž๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

2. ๋ฌธ์ œํ’€์ด์— ์‚ฌ์šฉ๋œ ๋ฉ”์„œ๋“œ: StringBulider.reverse()

  • StringBulider์˜ reverse() ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด์„ ๋’ค์ง‘์–ด ์ค€๋‹ค. 
  • String tmp = new StringBulider.reverse(x).toString();
  • ์œ„ ์ฝ”๋“œ๋Š” String x์˜ ๋ฌธ์ž์—ด์„ ๋’ค์ง‘๊ณ  ์ด๋ฅผ ๋‹ค์‹œ String tmp์— ์ €์žฅํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.
  • ๋‹ค๋งŒ, ์œ„์—์„œ ๋ณด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ String๊ณผ StringBuilder๋Š” ๋‹ค๋ฅธ ์ž๋ฃŒํ˜• ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— toString์„ ํ†ตํ•ด String์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋‹ด์•„์ค˜์•ผ ํ•œ๋‹ค.

2. ๋ฉ”์„œ๋“œ ์—†์ด ๋…ผ๋ฆฌ๋กœ๋งŒ ํ‘ธ๋Š” ๋ฒ• 

  • ๋ฌธ์ž์—ด์„ ์ผ๋‹จ ๋ฌธ์ž ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. -> Char[] s = x.toCharArray();
  • ๋ฌธ์ž ๋ฐฐ์—ด s๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜๊ฒŒ๋˜๋Š”๋ฐ ์ด ์ธ๋ฑ์Šค์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ์–ด์„œ ํ’€ ์ˆ˜์žˆ๋‹ค.
  • ๋ฌธ์ž์—ด ๋ฐฐ์—ด str์˜ ๊ฐ ์š”์†Œ x๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ, ๊ฐ ์š”์†Œ๋ฅผ ๋ฌธ์ž ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋ฌธ์ž์—ด์„ ๋’ค์ง‘๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด๋•Œ lt์™€ rt๋Š” ๋ฌธ์ž์—ด์„ ๋’ค์ง‘๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ธ๋ฑ์Šค ๋ณ€์ˆ˜๋กœ, lt๋Š” ์™ผ์ชฝ ๋ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ rt๋Š” ์˜ค๋ฅธ์ชฝ ๋ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. lt์™€ rt๋Š” ๊ฐ๊ฐ ๋ฌธ์ž์—ด์˜ ์–‘์ชฝ ๋์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, ์„œ๋กœ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•˜๋ฉด์„œ ๋ฌธ์ž์—ด์„ ๋’ค์ง‘๋Š”๋‹ค.
  • While(lt<rt) ์กฐ๊ฑด์„ ํ†ตํ•ด ์œ„์น˜ ๊ตํ™˜์„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ๋‹ค. ํ™€์ˆ˜ ์ผ๊ฒฝ์šฐ rt=lt๊ฐ€ ๋˜๋ฉด์„œ ๋ฉˆ์ถ”๊ณ , ์ง์ˆ˜ ๋ฌธ์ž์—ด์ผ ๊ฒฝ์šฐ lt>rt ๋˜๋ฉด์„œ false๊ฐ€ ๋˜์„œ ๋ฉˆ์ถ˜๋‹ค.
  • String.valueOf()๋ฅผ ํ†ตํ•ด ๋ฌธ์ž๋ฐฐ์—ด์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค. ์ด๋•Œ valueOf()๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ํด๋ž˜์Šค ์ž์ฒด์— ์ง์ ‘ ์ ‘๊ทผํ•˜์—ฌ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” 'static' ๋ฉ”์„œ๋“œ์ด๋‹ค. valueOf() ๋ฉ”์„œ๋“œ๋Š” ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š”๋ฐ, ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด String ๊ฐ์ฒด ์ƒ์„ฑ์—†์ด ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

for(String x : str) {
			char[] s = x.toCharArray();
			int lt=0, rt=x.length()-1;
			while(lt<rt) {
				char tmp = s[lt];
				s[lt] = s[rt];
                s[rt] = tmp;
				lt++;
				rt--;
			}
		String tmp =String.valueOf(s); // ๋’ค์งš์€ ๋ฌธ์ž๋ฐฐ์—ด์„ ๋‹ค์‹œ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.	
		}

 

3. String๊ณผ StringBuilder์˜ ์ฐจ์ด์ 

  • Java์—์„œ String๊ณผ StringBuilder๋Š” ๋‘˜ ๋‹ค ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค.
  • ๋‹ค๋งŒ,  String์€ ๋ถˆ๋ณ€(immutable) ํด๋ž˜์Šค์ด๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ๋ฒˆ ์ƒ์„ฑ๋œ 'String' ๊ฐ์ฒด๋Š” ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค. String์„ ์ˆ˜์ •ํ•  ๊ฒฝ์šฐ ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ๋ณ€ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด String ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด String์˜ ์ˆ˜์ •์ด ์žฆ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚˜๊ณ  ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ˜๋ฉด, StringBuilder๋Š” ๊ฐ€๋ณ€(mutable) ํด๋ž˜์Šค์ด๋‹ค. StringBuilder ๊ฐ์ฒด๋Š” ์ƒ์„ฑํ•œ ์ดํ›„์—๋„ ๊ฐ์ฒด ๋‚ด์˜ ๋ฌธ์ž์—ด์„ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด ์ˆ˜์ •์ด ์žฆ์„ ๊ฒฝ์šฐ๋Š” StringBuilder๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•˜๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ StringBuilder๋Š” ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค. 
  • ๊ฒฐ๋ก ์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ ์ฐธ์กฐ๋งŒ ํ•  ๊ฒฝ์šฐ์—๋Š” String๋ฅผ ์‚ฌ์šฉํ•˜์š” ๋ฌธ์ž์—ด์„ ๋งŽ์ด ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

๋ฐ˜์‘ํ˜•
Comments