๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–‹๏ธ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜/์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ch.1] ๋ฌธ์ž์—ด

by OR15A 2023. 11. 12.

๋Œ€์†Œ๋ฌธ์ž

Strign์„ ๋Œ€๋ฌธ์ž/์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜

  • str.toUpperCase()
  • str.toLowerCase()

char๋ฅผ ๋Œ€๋ฌธ์ž/์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜

  • Character.toUpperCase(c);
  • Character.toLowerCase(c);

String์—์„œ ๋Œ€->์†Œ , ์†Œ->๋Œ€ ๋ณ€ํ™˜

  • String์„ char๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  char[] = str.toCharArray()
  • ํ–ฅ์ƒ๋œ for๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ
  • ๋Œ€์†Œ๋ฌธ์ž boolean ๊ฒฐ๊ณผ์— ๋งž์ถฐ์„œ if(Char)
  • ์ ์ ˆํžˆ ๋ณ€ํ™˜ Character.toUpperCase(x) / Character.toLowerCase(x)
  • ๋ณ€ํ™˜ํ•œ ๋ฌธ์ž์—ด์€ String answer์— +=๋กœ ๋ˆ„์ 

์•„์Šคํ‚ค ๋„˜๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ

  • A=65, Z=90
  • a=97, z=122
  • ๋‘˜์˜ ์ฐจ์ด๋Š” 32
  • ์†Œ๋ฌธ์ž๋ฉด answer += (char)(x-32) / ๋Œ€๋ฌธ์ž๋ฉด answer -= (char)(x+32)



๋‹จ์–ด ์ž๋ฅด๊ธฐ

๋‹จ์–ด์ค‘ ๊ฐ€์žฅ ๊ธด ๋‹จ์–ด ์ฐพ๊ธฐ. ๊ธธ์ด๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๋‹จ์–ด

  • ๊ณต๋ฐฑ ๊ธฐ์ค€์œผ๋กœ ์ž˜๋ผ์„œ String[] ๋งŒ๋“ค๊ธฐ
  • String[] strArr = str.split(" ");
  • ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•
  • String answer = ""; int maxLength = 0; String[] strArr = str.split(" "); for(String x : strArr){ int len = x.length; if(len > maxLength) { maxLength= len; //๊ฐ€์žฅ ๊ธด ๊ธธ์ด ๊ฐฑ์‹  answer = x; //๊ทธ ๋‹จ์–ด๋กœ ๊ต์ฒด } }
  • ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ• : ๊ณต๋ฐฑ์˜ ์ธ๋ฑ์Šค๋ฒˆํ˜ธ๋ฅผ ์ฐพ๊ธฐ -> ๊ทธ ์ธ๋ฑ์Šค ์•ž๊นŒ์ง€ ์ž๋ฅด๋ฉด ๋‹จ์–ด
String answer = "";
int maxLength = 0;
int pos = 0;
while( (pos = str.indexOf(' ')) != -1 ){
  String tmp = str.substring(0, pos);
  int len = tmp.length();
  if(len > maxLength){
    maxLength= len;  //๊ฐ€์žฅ ๊ธด ๊ธธ์ด ๊ฐฑ์‹ 
    answer = x;      //๊ทธ ๋‹จ์–ด๋กœ ๊ต์ฒด
  }
str = str.substring(pos+1);     
}                                          
//๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒฝ์šฐ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋‹จ์–ด๋Š” ๊ณต๋ฐฑ ์—†์–ด์„œ ๋น„๊ต ๋ชปํ•จ. ๊ทธ๋ž˜์„œ ๋ฐ˜๋ณต๋ฌธ ๋ฐ”๊นฅ์—์„œ ํ•œ ๋ฒˆ ๋” ํ™•์ธ
if(str.length() > maxLength) answer = str;   



๋‹จ์–ด ๋’ค์ง‘๊ธฐ, StringBuilder

๋‹จ์–ด ๋’ค์ง‘๊ธฐ

  • StringBuiler์˜ ๋’ค์ง‘๋Š” ๋ฉ”์„œ๋“œ
String tmp = new StringBuilder(x).reverser.toString();
  • String๋ฅผ ํ•˜๋‚˜์˜ char[]๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋งจ์•ž์ธ๋ฑ์Šค&๋งจ๋’ค์ธ๋ฑ์Šค ๊ฐ’ ๊ตํ™˜ํ•˜๊ธฐ
  • ์ธ๋ฑ์Šค๋Š” startIndex++; endIndex--; ๊ทธ๋ฆฌ๊ณ  ๋‘˜์ด ๊ฐ™์œผ๋ฉด(์ฐจ์ด๋‚˜์ง€์•Š์œผ๋ฉด) ๋ฉˆ์ถ”๊ธฐ
for(String x : str){
    char[] s = x.toCharArray();
    int startIndex = 0;
    int endIndex = x.length()-1;
    while(startIndex < endIndex){
        char tmp = s[startIndex];
        s[startIndex] = s[endIndex];
        s[endIndex] = tmp;
        startIndex++;
        endIndex---;
    }
    String tmp = String.valueOf(s);
    andswer.add(tmp);   //๋นˆ ArrayList answer์— ๋‹ด๊ธฐ
}
  • ํŒŒ์ด์ฌ์—์„œ๋Š” ๊ฐ€์žฅ ์™ผ์ชฝ๋ฌธ์ž lt, ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ๋ฌธ์ž rt๋ผ๊ณ  ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋‚˜๋„ ์ด์ œ ๋ณ€๊ฒฝํ•จ



ํŠน์ • ๋ฌธ์ž ๋’ค์ง‘๊ธฐ

  • Q.์˜์–ด ์•ŒํŒŒ๋ฒณ๊ณผ ํŠน์ˆ˜๋ฌธ์ž ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง€๋ฉด, ์˜์–ด ์•ŒํŒŒ๋ฒณ๋งŒ ๋’ค์ง‘๊ธฐ
  • ์˜ˆ์‹œ (lt)a # b ! G E * T @ S(rt)
  • lt์™€ rt๊ฐ€ ๋‘˜ ๋‹ค ์•ŒํŒŒ๋ฒณ์ผ ๋•Œ ๊ตํ™˜ = lt์™€ rt๊ฐ€ ๋‘˜ ๋‹ค ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ์•„๋‹ ๋•Œ
  • if์˜ ์กฐ๊ฑด์„ lt ํŠน์ˆ˜๋ฌธ์ž? -> ํŠน์ˆ˜๋ฌธ์ž๋ฉด ๊ทธ๋ƒฅ ์ฆ๊ฐ€. ์•„๋‹ˆ๋ฉด else๋กœ rt ๋น„๊ต
  • String answer; char[] sArr = str.toCharArray(); int lt = 0; int rt = str.length()-1; while( lt < rt ){ if(!Character.isAlphabetic( sArr[lt] )) lt++; else if(!Character.isAlphabetic( sArr[rt] )) rt--; else { char tmp = s[lt]; s[lt] = s[rt]; s[rt] = tmp; lt++; rt--; } } answer = String.valueOf(sArr);



์ค‘๋ณต ๋ฌธ์ž ์ œ๊ฑฐ

indexOf(char) ์ด์šฉํ•˜๊ธฐ

  • indexOf๋Š” ๊ทธ ๋ฌธ์ž๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ฐพ์€ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜
  • for๋ฌธ๊ณผ str.charAt(i) ๋ฌธ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ์ˆœํšŒํ•˜๋Š”๋ฐ
    • ์ธ๋ฑ์Šคi์™€ str.indecOf(str.charAt(i))๊ฐ€ ๊ฐ™์œผ๋ฉด
    • ๊ทธ ๋ฌธ์ž๋Š” ์ฒซ์Œ์œผ๋กœ ๋ฐœ๊ฒฌ๋œ ๊ฒƒ
    • ์ธ๋ฑ์Šคi์™€ str.indecOf(str.charAt(i))๊ฐ€ ๋‹ค๋ฅด๋ฉด
    • ๊ทธ ๋ฌธ์ž๋Š” ์ฒซ๋ฒˆ์งธ ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ๊ฒƒ = ์ค‘๋ณต์ด๋ž€ ์˜๋ฏธ
  • ๊ฐ™์„ ๋•Œ๋งŒ ๋ฌธ์ž ๋ˆ„์ ํ•˜๋ฉด ๋จ