๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programmers lv-1

๋ฌธ์ž์—ด ๋‚˜๋ˆ„๊ธฐ - Java [์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต]

by ๊ทคํ”ผํ‚ค 2023. 1. 2.

 

 

โค๏ธ Problem

๋”๋ณด๊ธฐ
  • ๋ฌธ์ œ
    ๋ฌธ์ž์—ด s๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ์„ ๋•Œ ๋‹ค์Œ ๊ทœ์น™์„ ๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ž์—ด์„ ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด๋กœ ๋ถ„ํ•ดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

    - ๋จผ์ € ์ฒซ ๊ธ€์ž๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์ž๋ฅผ x๋ผ๊ณ  ํ•ฉ์‹œ๋‹ค.
    - ์ด์ œ ์ด ๋ฌธ์ž์—ด์„ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ฝ์–ด๋‚˜๊ฐ€๋ฉด์„œ, x์™€ x๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ธ€์ž๋“ค์ด ๋‚˜์˜จ ํšŸ์ˆ˜๋ฅผ ๊ฐ๊ฐ ์…‰๋‹ˆ๋‹ค. ์ฒ˜์Œ์œผ๋กœ ๋‘ ํšŸ์ˆ˜๊ฐ€ ๊ฐ™์•„์ง€๋Š” ์ˆœ๊ฐ„ ๋ฉˆ์ถ”๊ณ , ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ๋ฌธ์ž์—ด์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    - s์—์„œ ๋ถ„๋ฆฌํ•œ ๋ฌธ์ž์—ด์„ ๋นผ๊ณ  ๋‚จ์€ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๋‚จ์€ ๋ถ€๋ถ„์ด ์—†๋‹ค๋ฉด ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
    - ๋งŒ์•ฝ ๋‘ ํšŸ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์ƒํƒœ์—์„œ ๋” ์ด์ƒ ์ฝ์„ ๊ธ€์ž๊ฐ€ ์—†๋‹ค๋ฉด, ์—ญ์‹œ ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ๋ฌธ์ž์—ด์„ ๋ถ„๋ฆฌํ•˜๊ณ , ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

    ๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์œ„ ๊ณผ์ •๊ณผ ๊ฐ™์ด ๋ฌธ์ž์—ด๋“ค๋กœ ๋ถ„ํ•ดํ•˜๊ณ , ๋ถ„ํ•ดํ•œ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋Š” ํ•จ์ˆ˜ solution์„ ์™„์„ฑํ•˜์„ธ์š”.

 

  • ์ œํ•œ ์‚ฌํ•ญ
    • 1 ≤ s์˜ ๊ธธ์ด ≤ 10,000
    • s๋Š” ์˜์–ด ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • ์ž…์ถœ๋ ฅ ์˜ˆ & ์„ค๋ช…
no s result
1 "banana" 3
2 "abracadabra" 6
3 "aaabbaccccabba" 3
  1. s="banana"์ธ ๊ฒฝ์šฐ ba - na - na์™€ ๊ฐ™์ด ๋ถ„ํ•ด๋ฉ๋‹ˆ๋‹ค.
  2. s="abracadabra"์ธ ๊ฒฝ์šฐ ab - ra - ca - da - br - a์™€ ๊ฐ™์ด ๋ถ„ํ•ด๋ฉ๋‹ˆ๋‹ค.
  3. s="aaabbaccccabba"์ธ ๊ฒฝ์šฐ aaabbacc - ccab - ba์™€ ๊ฐ™์ด ๋ถ„ํ•ด๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ’› Solution

ํ’€์ด

class Solution {
    public int solution(String s) {
        String start = s.substring(0, 1);
        int same = 1;
        int diff = 0;
        int answer = 0;
        int index = 0;
        for(int i=2; i<s.length(); i++) {
            String cmp = s.substring(i-1, i);
            if(index+1 != i) {
                if(cmp.equals(start)) {
                    same++;
                } else {
                    diff++;
                }
            } else {
                same = 1;
            }

            if(diff > 0 && same == diff) {
                index += same+diff;
                answer++;
                same = 1;
                diff = 0;
                if(index < s.length()) {
                    start = s.substring(index, index+1);
                } else {
                    break;
                }
            } else {
                continue;
            }
        }
        if(diff!=same) {
            answer++;
        }
        return answer;
    }
}

 

์ฒ˜๋ฆฌ์†๋„ GOOD


 


 

๐Ÿ’œ Comment

์ด ๋ฌธ์ œ๋Š” charAt()์œผ๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ๊ตณ์ด ๊ตณ์ด substring();์œผ๋กœ ํ’€๋ฉด์„œ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์กŒ๋‹ค๐Ÿ˜‚

๋จผ์ €, String start๋ฅผ ์„ ์–ธํ•˜๋ฉด์„œ s.substring(0, 1)์„ ๋„ฃ์—ˆ๋‹ค. ์ฆ‰ ๋ฌธ์ž์—ด์˜ ๊ฐ€์žฅ ์ฒ˜์Œ ๋ฌธ์ž๋ฅผ start ๋ณ€์ˆ˜์— ๋„ฃ์—ˆ๋‹ค. ์ดํ›„ for๋ฌธ์—์„œ int same๊ณผ int diff๊ฐ€ ๊ฐ™์€ ์ˆซ์ž๊ฐ€ ๋˜๋ฉด start์—๋Š” same๊ณผ diff๊ฐ€ ๊ฐ™์•„์ง€๋Š” ์ˆœ๊ฐ„์— start = s.substring(index, index+1);๊ฐ€๋œ๋‹ค. ๊ทธ ์ด์œ ๋Š” "์ฒ˜์Œ์œผ๋กœ ๋‘ ํšŸ์ˆ˜๊ฐ€ ๊ฐ™์•„์ง€๋Š” ์ˆœ๊ฐ„ ๋ฉˆ์ถ”๊ณ , ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ๋ฌธ์ž์—ด์„ ๋ถ„๋ฆฌ"ํ•œ ๋‹ค์Œ์˜ ๋ฌธ์ž์—ด์„ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ต๋ฅผ ์ด์–ด๋‚˜๊ฐ€์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

int same=1;์ธ ์ด์œ ๋Š” ์ฒ˜์Œ์œผ๋กœ ์„ค์ •๋œ ๋ฌธ์ž์—ด start ๋˜ํ•œ ์นด์šดํŠธํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋•Œ๋ฌธ์— int diff๋Š” 0์œผ๋กœ ์„ค์ •๋œ๋‹ค. int answer๋Š” ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์นด์šดํŠธํ•  ๋ณ€์ˆ˜์ด๋ฏ€๋กœ 0์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. int index๋Š” 0์œผ๋กœ ์„ค์ •ํ–ˆ๋Š”๋ฐ

 

 

 

7769์œ„๐Ÿ˜

๋Œ“๊ธ€