๐Ÿง‘๐Ÿปโ€๐Ÿ’ป Coding Test/๐Ÿ–Œ๏ธ BAEKJOON

[ BAEKJOON ] ๋ฌธ์ž์—ด ๊ฒŒ์ž„ 2 / 20437 / Python

EarthSea 2025. 1. 8. 21:48

 

 

 

๋ฌธ์ œ

์ž‘๋…„์— ์ด์–ด ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ๊ฒŒ์ž„์ด ์žˆ๋‹ค. ๊ฒŒ์ž„์˜ ์ง„ํ–‰ ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด W๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
  2. ์–‘์˜ ์ •์ˆ˜ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
  3. ์–ด๋–ค ๋ฌธ์ž๋ฅผ ์ •ํ™•ํžˆ K๊ฐœ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ์—ฐ์† ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•œ๋‹ค.
  4. ์–ด๋–ค ๋ฌธ์ž๋ฅผ ์ •ํ™•ํžˆ K๊ฐœ๋ฅผ ํฌํ•จํ•˜๊ณ , ๋ฌธ์ž์—ด์˜ ์ฒซ ๋ฒˆ์งธ์™€ ๋งˆ์ง€๋ง‰ ๊ธ€์ž๊ฐ€ ํ•ด๋‹น ๋ฌธ์ž๋กœ ๊ฐ™์€ ๊ฐ€์žฅ ๊ธด ์—ฐ์† ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ฒŒ์ž„์„ TํšŒ ์ง„ํ–‰ํ•œ๋‹ค.

 

 

์ž…๋ ฅ

๋ฌธ์ž์—ด ๊ฒŒ์ž„์˜ ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค T โ‰ค 100)

๋‹ค์Œ ์ค„๋ถ€ํ„ฐ 2๊ฐœ์˜ ์ค„ ๋™์•ˆ ๋ฌธ์ž์—ด W์™€ ์ •์ˆ˜ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค K โ‰ค |W| โ‰ค 10,000)

 

 

์ถœ๋ ฅ

T๊ฐœ์˜ ์ค„ ๋™์•ˆ ๋ฌธ์ž์—ด ๊ฒŒ์ž„์˜ 3๋ฒˆ๊ณผ 4๋ฒˆ์—์„œ ๊ตฌํ•œ ์—ฐ์† ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ถœ๋ ฅํ•œ๋‹ค.

๋งŒ์•ฝ ๋งŒ์กฑํ•˜๋Š” ์—ฐ์† ๋ฌธ์ž์—ด์ด ์—†์„ ์‹œ -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ 1

2
superaquatornado
2
abcdefghijklmnopqrstuvwxyz
5

์˜ˆ์ œ ์ถœ๋ ฅ 1

4 8
-1

์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์—์„œ 3๋ฒˆ์—์„œ ๊ตฌํ•œ ๋ฌธ์ž์—ด์€ aqua, 4๋ฒˆ์—์„œ ๊ตฌํ•œ ๋ฌธ์ž์—ด์€ raquator์ด๋‹ค.

๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์—์„œ๋Š” ์–ด๋–ค ๋ฌธ์ž๊ฐ€ 5๊ฐœ ํฌํ•จ๋œ ๋ฌธ์ž์—ด์„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 2

1
abaaaba
3

์˜ˆ์ œ ์ถœ๋ ฅ 2

3 4

 


 

๋‚˜์˜ ํ’€์ด

๋กœ์ง

์‚ฌ์‹ค ๋ฌธ์ œ๋ฅผ ํ•œ๋ฒˆ๋งŒ์— ์ดํ•ดํ•˜์ง„ ๋ชปํ–ˆ๋‹ค..ใ…Ž

์˜ˆ์ œ๋ฅผ ๋ณด๋‹ˆ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋Œ€์ถฉ ์–ด๋–ป๊ฒŒ ํ’€์–ด์•ผํ•˜๋Š”์ง€ ๊ฐ์ด ์™”๋‹ค.

๋ฌธ์ž์—ด์— ํฌํ•จ๋œ ๋ฌธ์ž๋ฅผ โ€œ์ธ๋ฑ์Šคํ™”โ€ํ•˜์—ฌ ๋”•์…”๋„ˆ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค๋ฉด ๊ฐ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ๊ฐ€ ์ •๋ง ์‰ฌ์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ ‘๊ทผํ–ˆ๋‹ค.

์šฐ์„  superaquatornado๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค์–ด์„œ ์„ค๋ช…ํ•ด๋ณด์ž๋ฉด,

๊ฐ๊ฐ์˜ ๋ฌธ์ž๋ฅผ key๊ฐ’์œผ๋กœ ๊ฐ€์ง€๊ณ  ๊ฐ ๋ฌธ์ž์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ value๋กœ ๋ฐฐ์—ด๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋„๋ก ํ•ด๋ณด์ž.

s [0]
u [1, 7]
p [2]
e [3]
r [4, 11]
a [5, 8, 13]
q [6]
t [9]
o [10, 15]
n [12]
d [14]

์ด ์ค‘ ๋ฌธ์ž๋ฅผ ์ •ํ™•ํžˆ k๊ฐœ ํฌํ•จํ•˜๋Š” ์ง€๋Š” value์˜ ๊ธธ์ด๋ฅผ ํŒŒ์•…ํ•˜๋ฉด ๋œ๋‹ค.

์˜ˆ์‹œ์˜ k๋Š” 2๊ฐœ์ด๋ฏ€๋กœ 2๊ฐœ์ด์ƒ์ด ๋˜๋Š” value๋งŒ ๋ฝ‘์•„๋ณด์ž.

u [1, 7]
r [4, 11]
a [5, 8, 13]
o [10, 15]

์—ฌ๊ธฐ์„œ ์ •ํ™•ํžˆ k๊ฐœ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 2๊ฐœ๋ฅผ ๊ฐ„๊ฒฉ์œผ๋กœ ๋‘๊ณ  ๋’ท ๋ฒˆํ˜ธ์—์„œ ์•ž ๋ฒˆํ˜ธ๋ฅผ ๋นผ์ค€ ๋’ค 1๋ฅผ ๋”ํ•˜๋ฉด ํ•ด๋‹น ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ๋œ๋‹ค.

u [1, 7] -> 7
r [4, 11] -> 8
a [5, 8, 13] -> 4, 6
o [10, 15] -> 6

์ด๋ ‡๊ฒŒ 7, 8, 4, 6, 6 ์ด๋ผ๋Š” ์–ด๋–ค ๋ฌธ์ž๋ฅผ ์ •ํ™•ํžˆ k๊ฐœ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ธธ์ด์™€ ๊ฐ€์žฅ ๊ธด ๊ธธ์ด๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

์ฝ”๋“œ

from collections import defaultdict 

tc = int(input())

for _ in range(tc):
    word = input()
    k = int(input())
    
    alphabet_dict = defaultdict()

    for i, w in enumerate(word):
        if alphabet_dict.get(w) == None :
            alphabet_dict[w] = [i]
        else:
            alphabet_dict[w].append(i)

    for (key, value) in alphabet_dict.items():
        if len(value) >= k:
            for i in range(0, len(value) - k + 1):
                tmp.append(value[i + k - 1] - value[i] + 1)

    if tmp == []:
        print(-1)
    else:
        print(min(tmp), max(tmp))

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•œ๋‹ค๋ฉด

from collections import defaultdict 

tc = int(input())

for _ in range(tc):
    word = input()
    k = int(input())
    
    alphabet_dict = defaultdict(list)
    
    for i, w in enumerate(word):
        alphabet_dict[w].append(i)

    min_length = float('inf')
    max_length = -1

    for indices in alphabet_dict.values():
        if len(indices) >= k:
            for i in range(len(indices) - k + 1):
                length = indices[i + k - 1] - indices[i] + 1
                min_length = min(min_length, length)
                max_length = max(max_length, length)

    if max_length == -1:
        print(-1)
    else:
        print(min_length, max_length)

์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.