Algorithm/ํ…Œ์ฝ”ํ…Œ์ฝ”1.5(2025)

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 4-03] ๋ฌธ์ž์—ด ๋ฐ€๊ธฐ

binaryJournalist 2025. 2. 21. 13:53
๋ฐ˜์‘ํ˜•
๐Ÿ’กํ…Œ์ฝ”ํ…Œ์ฝ” ์‹œ์ฆŒ 1.5 4ํšŒ ๋ชจ์ž„ off-site ๋ฌธ์ œ ํ’€์ด์ž…๋‹ˆ๋‹ค. (2025.02.15)

 

๋ฌธ์ œ

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋ฌธ์ž์—ด ๋ฐ€๊ธฐ

 

๋‚ด์šฉ

 

๋ฌธ์ž์—ด "hello"์—์„œ ๊ฐ ๋ฌธ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ์”ฉ ๋ฐ€๊ณ  ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋Š” ๋งจ ์•ž์œผ๋กœ ์ด๋™์‹œํ‚ค๋ฉด "ohell"์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ฌธ์ž์—ด์„ ๋ฏผ๋‹ค๊ณ  ์ •์˜ํ•œ๋‹ค๋ฉด ๋ฌธ์ž์—ด A์™€ B๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, A๋ฅผ ๋ฐ€์–ด์„œ B๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฐ€์–ด์•ผ ํ•˜๋Š” ์ตœ์†Œ ํšŸ์ˆ˜๋ฅผ returnํ•˜๊ณ  ๋ฐ€์–ด์„œ B๊ฐ€ ๋  ์ˆ˜ ์—†์œผ๋ฉด -1์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.

 

 

๊ธฐ๋กํ•˜๊ธฐ

๐Ÿ’ก ์–ด๋””๊นŒ์ง€ ์ƒ๊ฐํ•ด๋ดค๋Š”์ง€ ๋‹จ๊ณ„์ ์œผ๋กœ ๊ธฐ๋กํ•ด๋ด…๋‹ˆ๋‹ค.

 

ํ’€์ด

ํ’€์ด ์‹œ๊ฐ„

์‹œ์ž‘ ์‹œ๊ฐ ์ข…๋ฃŒ ์‹œ๊ฐ ์ด ์†Œ์š” ์‹œ๊ฐ„
    30๋ถ„

๋ฌธ์ œ ๋ถ„์„

์ œ์•ฝ ์‚ฌํ•ญ ํŒŒ์•… & ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ

์ œํ•œ์‚ฌํ•ญ
  • 0 < A์˜ ๊ธธ์ด = B์˜ ๊ธธ์ด < 100
  • A, B๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์ž…๋ ฅ๊ฐ’ ๋ถ„์„

๐Ÿ’ก ์ž…๋ ฅ๊ฐ’์„ ๋ถ„์„ํ•˜๋ฉด ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ
A B result
"hello" "ohell" 1
"apple" "elppa" -1
"atat" "tata" 1
"abc" "abc" 0
 
์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

 

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • "hello"๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ๋ฐ€๋ฉด "ohell"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • "apple"์€ ๋ช‡ ๋ฒˆ์„ ๋ฐ€์–ด๋„ "elppa"๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

  • "atat"๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ, ์„ธ ์นธ์„ ๋ฐ€๋ฉด "tata"๊ฐ€ ๋˜๋ฏ€๋กœ ์ตœ์†Œ ํšŸ์ˆ˜์ธ 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #4

  • "abc"๋Š” ๋ฐ€์ง€ ์•Š์•„๋„ "abc"์ด๋ฏ€๋กœ 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

์˜์‚ฌ ์ฝ”๋“œ ์ž‘์„ฑ

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋™์ž‘ ์ค‘์‹ฌ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ์ˆœ์„œ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋ฅผ ์ถฉ๋ถ„ํžˆ ํ…Œ์ŠคํŠธํ•ด๋ด…๋‹ˆ๋‹ค.

solution(A, B) {
    // while ๋ฌธ ์‚ฌ์šฉ
        // A์™€ ํšŒ์ „๋œ ๋ฌธ์ž์—ด ๋น„๊ต
            // - ๊ฐ™์„ ์‹œ ํšŸ์ˆ˜ ๋ฐ˜ํ™˜
        // B ํšŒ์ „
        // ํšŸ์ˆ˜++
}

 

 

๊ตฌํ˜„

1์ฐจ ํ’€์ด

import java.util.Arrays;

class Solution {
    public int solution(String A, String B) {
        int lenA = A.length();
        char[] chars = B.toCharArray();
        char[] rotate = new char[lenA];
        int answer = 0;
        while (answer < lenA) {
            if (A.equals(String.valueOf(chars))) break;
            for (int i = 0; i < lenA; i++) {
                rotate[i] = chars[(i + 1) % lenA];
            }
            answer++;
            chars = Arrays.copyOfRange(rotate, 0, lenA);
        }
        return lenA == answer ? -1 : answer;
    }
}
  • Arrays.copyOfRange ์‚ฌ์šฉ์ด ์„ฑ๋Šฅ์ ์œผ๋กœ ๋น„ํšจ์œจ์ ์ธ ๊ฒƒ ๊ฐ™์•„ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ•œ๋‹ค.

 

2์ฐจ ํ’€์ด

import java.util.ArrayDeque;

class Solution {
    public int solution(String A, String B) {
        int lenA = A.length();
        StringBuilder sb = new StringBuilder(B);

        for (int i = 0; i < lenA; i++) {
            if (A.equals(sb.toString())) return i;
            sb.insert(lenA, sb.charAt(0));
            sb.delete(0, 1);
        }
        return -1;
    }
}
  • sb.delete๊ฐ€ sb.insert๋ณด๋‹ค ๋จผ์ € ์ž‘์„ฑ๋˜๊ธธ ๋ฐ”๋ž์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒฝ์šฐ sb.chartAt ์ฝ”๋“œ์—์„œ IndexOutOfRange ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜์˜€๋‹ค.

 

๋ณต๊ธฐํ•˜๊ธฐ

๋‹ต์•ˆ๊ณผ ๋‚˜์˜ ํ’€์ด๋ฅผ ๋น„๊ตํ•ด๋ณด์„ธ์š”

class Solution {
    public int solution(String A, String B) {
        String tempB = B.repeat(3);
        return tempB.indexOf(A);
    }
}
  • ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ ๋‚˜๋„ ์ด๋Ÿฐ ์‹์œผ๋กœ ํ’€์—ˆ๋Š”๋ฐ ์ž๋ฐ”๋Š” ์ด๋ ‡๊ฒŒ ํ’€๊ธฐ ์‹ซ์—ˆ๋‹ค.
๋ฐ˜์‘ํ˜•