Teddy Bear Holding A Heart Balloon [Lv.1] ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฐ™์€ ๊ธ€์ž
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿฅ‡ Coding Test/์˜ค๋‹ต๋…ธํŠธ

[Lv.1] ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฐ™์€ ๊ธ€์ž

https://school.programmers.co.kr/learn/courses/30/lessons/142086

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

[ ๋ฌธ์ œ์„ค๋ช… ]

๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, s์˜ ๊ฐ ์œ„์น˜๋งˆ๋‹ค ์ž์‹ ๋ณด๋‹ค ์•ž์— ๋‚˜์™”์œผ๋ฉด์„œ, ์ž์‹ ๊ณผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณณ์— ์žˆ๋Š” ๊ฐ™์€ ๊ธ€์ž๊ฐ€ ์–ด๋”” ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, s="banana"๋ผ๊ณ  ํ•  ๋•Œ,  ๊ฐ ๊ธ€์ž๋“ค์„ ์™ผ์ชฝ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ฝ์–ด ๋‚˜๊ฐ€๋ฉด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

b๋Š” ์ฒ˜์Œ ๋‚˜์™”๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์˜ ์•ž์— ๊ฐ™์€ ๊ธ€์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” -1๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

a๋Š” ์ฒ˜์Œ ๋‚˜์™”๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์˜ ์•ž์— ๊ฐ™์€ ๊ธ€์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” -1๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

n์€ ์ฒ˜์Œ ๋‚˜์™”๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์˜ ์•ž์— ๊ฐ™์€ ๊ธ€์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” -1๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

a๋Š” ์ž์‹ ๋ณด๋‹ค ๋‘ ์นธ ์•ž์— a๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” 2๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

n๋„ ์ž์‹ ๋ณด๋‹ค ๋‘ ์นธ ์•ž์— n์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” 2๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

a๋Š” ์ž์‹ ๋ณด๋‹ค ๋‘ ์นธ, ๋„ค ์นธ ์•ž์— a๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ๊ฐ€๊นŒ์šด ๊ฒƒ์€ ๋‘ ์นธ ์•ž์ด๊ณ , ์ด๋Š” 2๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์€ [-1, -1, -1, 2, 2, 2]๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด s์ด ์ฃผ์–ด์งˆ ๋•Œ, ์œ„์™€ ๊ฐ™์ด ์ •์˜๋œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜ solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

[ ํ’€์ด๊ณผ์ • ]

1๋ฒˆ์‹œ๋„ > 

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()]; //์ •๋‹ต๋ฐฐ์—ดํฌ๊ธฐ s๋ฌธ์ž์—ดํฌ๊ธฐ์™€ ๋™์ผํ•˜๊ฒŒ ์„ค์ •
        char[] ch = s.toCharArray(); //๋ฌธ์ž์—ด s๋ฅผ char๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์คŒ
        answer[0] = -1; //answer๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค์—๋Š” -1์„ ๋„ฃ์–ด์ฃผ๊ธฐ
        
        //์ด์ค‘ for๋ฌธ์œผ๋กœ
        //1) i๋Š” ch๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋Œ๊ธฐ
        //2) j๋Š” ch๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค 0๋ถ€ํ„ฐ i-1๊นŒ์ง€ ๋Œ๊ธฐ
        for (int i=1; i<ch.length; i++) { 
            for (int j=0; j<i; j++) {
                if (ch[i] != ch[j]) { //๊ฐ™์€ ์›์†Œ๊ฐ€ ์—†๋‹ค๋ฉด
                    answer[i] = -1; //์ •๋‹ต๋ฐฐ์—ด์— -1๋‹ด์•„์ฃผ๊ธฐ
                } else { //๊ฐ™์€ ์›์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด
                    answer[i] = i-j; //i์ธ๋ฑ์Šค - j์ธ๋ฑ์Šค ๋‹ด์•„์ฃผ๊ธฐ
                }
            }
        }
        return answer;
    }
}

๋ฌด์–ธ๊ฐ€ ์ž˜๋ชป๋๋‹ค...!

2๋ฒˆ์‹œ๋„>

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        char[] ch = s.toCharArray();
        answer[0] = -1;
        
        for (int i=1; i<ch.length; i++) {
            for (int j=i-1; j>=0; j--) { //j๋ฅผ i-1๋ถ€ํ„ฐ 0๊นŒ์ง€ ๊ฑฐ๊พธ๋กœ ํƒ์ƒ‰ํ•˜๋„๋ก ๋ณ€๊ฒฝ
                if (ch[i] == ch[j]) { //๊ฐ™์€ ์•ŒํŒŒ๋ฒณ์„ ๋งŒ๋‚˜๋ฉด
                    answer[i] = i-j; //answer์— i-j๋‹ด๊ณ 
                    break; //๋น ์ ธ๋‚˜์˜ค๊ธฐ
                } else { //๊ฐ™์€ ์•ŒํŒŒ๋ฒณ์„ ๋ชป์ฐพ์•˜๋‹ค๋ฉด
                    answer[i] = -1; //answer์— -1๋‹ด๊ธฐ 
                }
            }
        }
        return answer;
    }
}