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

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

by OR15A 2023. 11. 12.

๋ฌธ์ž์—ด ์••์ถ•

๊ฐ™์€ ๋ฌธ์ž ๋ฐ˜๋ณต ์ฐพ๊ธฐ

  • ๊ฐ™์€ ๋ฌธ์ž๊ฐ€ ์—ฐ์†์œผ๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒฝ์šฐ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž ๋ฐ”๋กœ ์˜ค๋ฅธ์ชฝ์— ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ž์—ด ์••์ถ•ํ•˜๊ธฐ
  • ๋ฐ˜๋ณตํšŸ์ˆ˜ 1์€ ์ ์šฉํ•˜์ง€ ์•Š์Œ
  • ์˜ˆ์‹œ KKHSSSSSSSE
  • i์™€ i+1์„ ๋น„๊ต. ๊ฐ™์œผ๋ฉด cnt์ฆ๊ฐ€, ๋‹ค๋ฅด ์ง€์ ์„ ๋งŒ๋‚˜๋ฉด String answer์— ํ•ด๋‹น ๋ฌธ์ž, cnt๋ฅผ ๋ˆ„์ ํ•˜๋ฉด ๋จ.
  • cnt๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™” ํ•˜๊ณ  ๋‹ค์‹œ ๋น„๊ตํ•˜๋ฉฐ ์ง€๋‚˜๊ฐ€๊ธฐ
  • ๋ฐฐ์—ด ๋งฝ ๋๋ฌธ์ž๊ฐ€ ์—†์–ด ์˜ˆ์™ธ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งจ ๋์— ๋นˆ ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผํ•จ.
String answer = "";
str = str + " ";
int cnt = 1;
for( int i=0; i<s.length()-1 ; i++ ){
    if( s.charAt(i)==s.charAt(i+1) ) cnt++;
    else{
        answer += s.charAt(i);  //๋ฌธ์ž ์ถ”๊ฐ€
        if(cnt>1) answer += String.valueOf(cnt);  //๋ฌธ์ž ๋ฐ˜๋ณต ํšŸ์ˆ˜ ์ถ”๊ฐ€
        cnt=1; //cnt์ดˆ๊ธฐํ™”
    }
}
return answer;




์•”ํ˜ธ

ํŠน์ˆ˜๋ฌธ์ž -> ์ด์ง„์ˆ˜ -> ์‹ญ์ง„์ˆ˜ -> ์•„์Šคํ‚ค์ฝ”๋“œ ๋ณ€ํ™˜

  • ์ƒต๋ณ„๋ณ„๋ณ„๋ณ„๋ณ„์ƒต์„ ์ผ๊ณฑ์ž๋ฆฌ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ -> 1000001 -> 10์ง„์ˆ˜ํ™”ํ•˜๋ฉด65 -> ์•„์Šคํ‚ค์ฝ”๋“œ 65 = A
  • ์˜ˆ์ œ ์ƒต๋ณ„๋ณ„๋ณ„๋ณ„์ƒต์ƒต์ƒต๋ณ„๋ณ„์ƒต์ƒต์ƒต์ƒต์ƒต๋ณ„๋ณ„์ƒต์ƒต์ƒต์ƒต์ƒต๋ณ„๋ณ„์ƒต์ƒต๋ณ„๋ณ„
  • ์ธ๋ฑ์Šค0๋ถ€ํ„ฐ 7๊นŒ์ง€ ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ str.subString(0, 7)
  • ์ƒต์€ 1๋กœ, ๋ณ„์€ 0์œผ๋กœ ์น˜ํ™˜ํ•˜๊ธฐ
for( int i=0; i< n ; i++ ){
    String tmp = str.subString(0, 7).replace('#','1').replace('*','0');
    int num = Integer.parseInt(tmp, 2);  //2์ง„์ˆ˜ ๋ฌธ์ž์—ด์„ 10์ง„์ˆ˜ int๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ
    answer += (char)num;  //์ •์ˆ˜๋ฅผ ์•„์Šคํ‚ค์ฝ”๋“œ์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ (์ด๊ฒฝ์šฐ 67 -> C)
    str = str.subSring(7);  //์ด๋ฏธ ํ™•์ธํ•œ 7๊ฐœ ๋นผ๊ณ  ๊ทธ ์ดํ›„๋งŒ ๋‚จ๊ฒŒ String ์ž๋ฅด๊ธฐ
}