Banner

My Tech Blog (stringbuilder)

์ฝ”ํ…Œ ๋ฌธ์ œ ํ’€ ๋•Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ๋„ ๊ณต๋ถ€ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ค‘์š”ํ•˜๋‹ค.ํด๋ฆฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜ ์„ธ ๊ฐ€์ง€ ์Šต๊ด€์„ ๋“ค์—ฌ์•ผ ํ•œ๋‹ค.ํ•˜๋ฃจ ์•„์นจ์— ์ฝ”๋“œ ์“ฐ๋Š” ์Šต๊ด€์ด ๋ฐ”๋€Œ์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ๋งค๋ฒˆ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์ด๋Ÿฌํ•œ ์Šต๊ด€์„ ์—ผ๋‘์— ๋‘๊ณ  ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ์ ์ฐจ ํด๋ฆฐ ์ฝ”๋“œ ์ž‘์„ฑ ๋Šฅ๋ ฅ์ด ํ–ฅ์ƒ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•œ๋‹ค.  1. ์กฐ๊ธฐ๋ฐ˜ํ™˜ (early return)์กฐ๊ธฐ ๋ฆฌํ„ด(early return)์€ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ์—์„œ ๋ฐ”๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์ด๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ถˆํ•„์š”ํ•œ ๊ณ„์‚ฐ์„ ํ”ผํ•˜๊ณ  ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, totalPrice ํ•จ์ˆ˜์—์„œ ๊ฐ€๊ฒฉ์ด 100์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ”๋กœ ํ• ์ธ์„ ์ ์šฉํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ, ์กฐ๊ธฐ ๋ฆฌํ„ด์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ํ• ์ธ ๋กœ์ง์„ ..
๐Ÿ“‘ 1. ๋ฌธ์ž์—ด ์„ž๊ธฐ ๐Ÿ’ก 1-1. ์ ‘๊ทผ๋ฐฉ์‹โ–  ๋‹จ์ˆœํžˆ ์ฃผ์–ด์ง„ ๋ณ€์ˆ˜๋ช… ๊ทธ๋Œ€๋กœ a + b > b + a ์ด๋ ‡๊ฒŒ ๋น„๊ตํ•˜๋ฉด ๋‘ ์ˆซ์ž๋Š” ์ •์ˆ˜ ๋ง์…ˆ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ a + b == b + a๊ฐ€ ๋œ๋‹ค. ๋ฌธ์ œ์—์„œ ์˜๋„ํ•œ ๊ฒƒ์€ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์—ฐ๊ฒฐํ•œ ํ›„, ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋น„๊ตํ•˜๋ ค๋ฉด String.valueOf(a) + b์™€ String.valueOf(b) + a ๋ฅผ ๋น„๊ตํ•ด์•ผ ํ•œ๋‹ค.  โ–   ๋˜ ๋‚˜๋Š” ์ฒ˜์Œ์— sb.toString()์„ ์จ์„œ int๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ ํ–ˆ๋Š”๋ฐ,  sb.toString()์€ ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์—, int ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•˜๋Š” solution ๋ฉ”์„œ๋“œ์™€ ํƒ€์ž…์ด ๋งž์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ Integer.parseInt(sb.toString())์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.  ํ‹€๋ฆฐ ์ฝ”๋“œclas..
๐Ÿ“‘ 1. ๋ฌธ์ œ์„ค๋ช… ๐Ÿ’ก 2. ์ •๋‹ต์ฝ”๋“œ๐Ÿ™…๐Ÿป‍โ™€๏ธ ์ฒซ ๋ฒˆ์งธ ์‹œ๋„ - ํ‹€๋ฆผ โŒํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ˜์†”์ด ์ž๋™์™„์„ฑ์ด ์•ˆ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ฐ๋‚˜๋Š”๋ฐ๋กœ ์จ์„œ ๋งŽ์ด ํ‹€๋ ธ๋‹ค.class Solution {    public String solution(String str1, String str2) {        StringBuilder sb = new StringBuilder();        for(int i = 0; i   ์˜ค๋‹ต ์ •๋ฆฌโญ str1.length → str1.length() length๋Š” ๋ฐฐ์—ด์—์„œ ์‚ฌ์šฉ๋˜๊ณ , ๋ฌธ์ž์—ด์—์„œ๋Š” length() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. โญ  sb.add(...) → sb.append(...)StringBuilder๋Š” add() ๋ฉ”์„œ๋“œ๊ฐ€ ์—†๊ณ , ๋Œ€์‹  append()๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.โญ  st..
1. ์ž๋ฐ”์˜ ์ž๋ฃŒํ˜• String Buffer๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ์— ์•ž์„œ ์ž๋ฐ”์˜ ์ž๋ฃŒํ˜•์—๋Š” ๊ธฐ๋ณธํ˜•(Primitive Type)๊ณผ ์ฐธ์กฐํ˜•(Reference Type)์ด ์žˆ๋‹ค. ๊ธฐ๋ณธํ˜•์€ ๊ฐ’ ์ž์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ •์ˆ˜ํ˜•, ์‹ค์ˆ˜ํ˜•, ๋ฌธ์žํ˜•(char), ๋…ผ๋ฆฌํ˜•์ด ๊ธฐ๋ณธํ˜•์— ์†ํ•œ๋‹ค. ๋ฐ˜๋ฉด, ์ฐธ์กฐํ˜• ์ฃผ์†Œ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ, ์‹ค์ œ๋กœ๋Š” ์ฃผ์†Œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค.  ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋ฐ”์˜ 8๊ฐ€์ง€ ๊ธฐ๋ณธํ˜•(Primitive Type)์ด ์•„๋‹Œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์ฐธ์กฐํ˜•์— ์†ํ•œ๋‹ค. ๋ฆฌ์ŠคํŠธ๋‚˜ ๋งต, ์ง‘ํ•ฉ์ฒ˜๋Ÿผ ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ์ž๋ฐ” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž๋ฃŒํ˜•๋“ค์ด ์ฐธ์กฐํ˜•์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”ํžˆ ๋ฌธ์ž์—ด์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” String๋„ ์ฐธ์กฐํ˜•์— ์†ํ•œ๋‹ค. ์ฐธ์กฐํ˜•(Reference Type)- ํด๋ž˜์Šค (Class): ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ๊ฐ..
์—ฌ๋Ÿฌ๋ถ„๋“ค ์ž…๋ ฅ๋„๊ตฌ Scanner ๋งŽ์ด ์“ฐ์‹œ์ฃ ? ๊ทธ๋Ÿฐ๋ฐ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ ํ’€๋‹ค ๋ณด๋ฉด Scanner๋ณด๋‹ค BufferedReader / BufferedWriter์„ ๋” ๋งŽ์ด ์“ฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ์ ์ด ๋” ์ข‹์„๊นŒ์š”?    ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ž…๋ ฅ์€, ํ‚ค๋ณด๋“œ์˜ ์ž…๋ ฅ์ด ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋Š” ์ฆ‰์‹œ ๋ฐ”๋กœ ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌ๋ฐ˜๋ฉด ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž…๋ ฅ์€, ํ‚ค๋ณด๋“œ์˜ ์ž…๋ ฅ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค ํ•œ ๋ฌธ์ž์”ฉ ๋ฒ„ํผ๋กœ ์ „์†กํ•œ๋‹ค. ๋ฒ„ํผ๊ฐ€ ๊ฐ€๋“ ์ฐจ๊ฑฐ๋‚˜ ๊ฐœํ–‰ ๋ฌธ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ํ•œ ๋ฒˆ์— ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌ์ฆ‰, ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๋ชจ์•„์„œ ์ „๋‹ฌ Scanner๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ† ํฐ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋„์–ด์“ฐ๊ธฐ์™€ ๊ฐœํ–‰๋ฌธ์ž๋ฅผ ๊ฒฝ๊ณ„๋กœ ํ•˜์—ฌ ์ž…๋ ฅ ๊ฐ’์„ ์ธ์‹๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ๊ฐ€๊ณตํ•  ํ•„์š”๊ฐ€ ์—†์–ด ํŽธ๋ฆฌํ•˜๋‹ค.BufferedReader์€ ์ž…๋ ฅ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๊ฐ€ St..
โœ… ๋ฌธ์ œ ๋น ๋ฅด๊ฒŒ ์ž…๋ ฅ๋ฐ›๊ณ  ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ โ€‹๐Ÿ“ฅ ์ž…๋ ฅ ์ฒซ ์ค„์— ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. T๋Š” ์ตœ๋Œ€ 1,000,000์ด๋‹ค. ๋‹ค์Œ T์ค„์—๋Š” ๊ฐ๊ฐ ๋‘ ์ •์ˆ˜ A์™€ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. A์™€ B๋Š” 1 ์ด์ƒ, 1,000 ์ดํ•˜์ด๋‹ค. โ€‹๐Ÿ“ฅ ์ถœ๋ ฅ ๊ฐ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋งˆ๋‹ค A+B๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค. โ€‹ ๐Ÿ’ก ํ’€์ด ์‹œ๊ฐ„์ œํ•œ์€ 1.5์ดˆ๋‹ค. ๋”ฐ๋ผ์„œ Scanner๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ์˜ค๋‹ต์ฒ˜๋ฆฌ ๋œ๋‹ค. System.out.printn ๋„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๋œ๋‹ค. 1000๋งŒ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ ๋ฐ›์„ ๋•Œ ๊ธฐ์ค€์œผ๋กœ Scanner๋ฅผ ์ด์šฉํ•˜๋ฉด ์ˆ˜ํ–‰์‹œ๊ฐ„ 6์ดˆ ๊ฑธ๋ฆฐ๋‹ค. ํ•˜์ง€๋งŒ BufferedReader์„ ์‚ฌ์šฉํ•˜๋ฉด 0.9์ดˆ ๋ฐ–์— ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ์ด์ฒ˜๋Ÿผ Scanner์™€ BufferedReader์˜ ์†๋„๋Š” ํฌ๊ฒŒ ์ฐจ์ด๋‚œ๋‹ค, ๋”ฐ๋ผ์„œ ์ž…๋ ฅ์ด ๋งŽ์€..
์ธ์ ˆ๋ฏธ์˜€๋˜๊ฒƒ
'stringbuilder' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก
์ƒ๋‹จ์œผ๋กœ