๐Ÿค[์•Œ๊ณ ๋ฆฌ์ฆ˜] SW Expert ํŒŒ์ด์ฌ SW๋ฌธ์ œํ•ด๊ฒฐ ๊ธฐ๋ณธ - String ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฌธ์ž์—ด ๋น„๊ต

t=int(input())
for i in range(t):
    str1=input()
    str2=input()
    flag=False
    for j in range(len(str2)): 
        count=0
        if str2[j]==str1[0]: #์ฒซ๊ธ€์ž๊ฐ€ ๊ฐ™์€๊ฒŒ ์žˆ์œผ๋ฉด
            k=0
            while k<len(str1) and j<len(str2): #๊ฒ€์‚ฌ ์‹œ์ž‘
                if str2[j]==str1[k]:
                    count+=1
                j+=1
                k+=1
        if count==len(str1): #๋ชจ๋“  ๊ธ€์ž๊ฐ€ ๊ฐ™์œผ๋ฉด True
            flag=True
            break

    if flag==True:
        print('#%d %d'%(i+1, 1))
    else:
        print('#%d %d'%(i+1, 0))

ํšŒ๋ฌธ

์ด๋•Œ๊นŒ์ง€ ํ‘ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ค‘ ์ œ์ผ ์–ด๋ ค์› ๋‹ค ใ… 
๊ฒ€์ƒ‰ํ•ด์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฐธ๊ณ ํ•˜๋ฉด์„œ ๋ชฐ๋ž๋˜ Extended Slices๋„ ์•Œ๊ฒŒ๋จ

Extended Slices
: arr[::], arr[1:2:3], arr[::-1]๋“ฑ์œผ๋กœ ๋ฐฐ์—ด์˜ index์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•

arr[A:B:C]: ์ธ๋ฑ์Šค A๋ถ€ํ„ฐ ์ธ๋ฑ์Šค B๊นŒ์ง€ C์˜ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ฐฐ์—ด์„ ๋งŒ๋“ฆ

  • A๊ฐ€ ์—†์œผ๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ
  • B๊ฐ€ ์—†์œผ๋ฉด ๊ฐ€๋Šฅํ•œ๋ฐ๊นŒ์ง€.(C๊ฐ€ ์–‘์ˆ˜๋ฉด ๋งˆ์ง€๋ง‰ index๊นŒ์ง€, ์Œ์ˆ˜๋ฉด ์ฒซ index๊นŒ์ง€)
  • C๊ฐ€ ์—†์œผ๋ฉด ํ•œ ์นธ ๊ฐ„๊ฒฉ์œผ๋กœ
t=int(input())
for i in range(1,t+1):
    n,m=map(int, input().split())
    arr=[]

    # ๊ฐ€๋กœ ๊ฒ€์‚ฌ : ๊ฐ€๋กœ์ค„์„ m์”ฉ ์ž˜๋ผ์„œ ๋’ค์ง‘์€ ํ›„ ๊ฐ™์€์ง€ ๊ฒ€์‚ฌ, ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด ํ•œ์นธ์”ฉ ๋’ค๋กœ ๊ฐ
    row=[] # row: input๋ฐ›์€ ํ•œ์ค„์”ฉ์ด ์š”์†Œ๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋ฐฐ์—ด
    for j in range(n):
        temp=input()
        row.append(temp)
        for j in range(len(temp)-m+1):
            if temp[j:m+j]==temp[j:m+j][::-1]: # temp[j:m+j][::-1] : reverseํ•œ ๋ฐฐ์—ด ์ƒ์„ฑ
                arr.append(temp[j:m+j])


    # ์„ธ๋กœ ๊ฒ€์‚ฌ
    col=[]
    string=''
    for p in range(n):
        for q in row:
            string+=q[p] # string: ์„ธ๋กœ ํ•œ์ค„
        col.append(string)
        string=''
        
    for col_data in col:
        for z in range(len(col_data)-m+1):
            if col_data[z:m+z]==col_data[z:m+z][::-1]:
                arr.append(col_data[z:m+z])
    
    print('#%d %s'%(i, arr[0]))

reverseํ•œ ๋ฐฐ์—ด ๋งŒ๋“ค์–ด์„œ ๋น„๊ตํ•˜๋Š”๊ฒƒ๊นŒ์ง€ ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ, ์ผ์ผ์ด reverse์•ˆํ•ด์ฃผ๊ณ  extended slices๋ฅผ ์“ฐ๋ฉด ๋˜๋Š”๊ฒƒ์ด์˜€์Œ๐Ÿ™„

๋‚จ์˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•œ๊ฑด ์ฒ˜์Œ์ธ๋ฐ, ์ƒ๊ฐ์˜ ํญ์ด ๋„“์–ด์ง€๋Š”๊ฒƒ ๊ฐ™์•„์„œ ์ข‹์•˜๋‹ค. ์ฝ”๋“œ ์ฝ์œผ๋ฉด์„œ ์ด๋ ‡๊ฒŒ๋„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ตฌ๋‚˜ ๊ณ„์† ๋Š๊ผˆ์Œ


๊ธ€์ž์ˆ˜

๋”•์…”๋„ˆ๋ฆฌ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ๋‚˜์™€์žˆ์–ด์„œ ์—„์ฒญ ์‰ฌ์› ๋‹ค

t=int(input())
for i in range(t):
    str1=input()
    str2=input()
    count={} # ๋”•์…”๋„ˆ๋ฆฌ
    for j in str1:
        if j not in count: # ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ๋”•์…”๋„ˆ๋ฆฌ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
            count[j]=0
    
    for p in str2:
        for q in count:
            if p==q: # ํ‚ค์™€ ๋™์ผํ•œ๊ฒŒ ์žˆ์œผ๋ฉด ๊ฐ’+1
                count[q]+=1
    
    max=0
    for p in count: # max ์ฐพ๊ธฐ
        if max<count[p]:
            max=count[p]
    print('#%d %d'%(i+1, max))

์ด๋•Œ๊นŒ์ง€ ๋”•์…”๋„ˆ๋ฆฌ ์จ์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ ํ•œ๋ฒˆ๋„ ์•ˆํ–ˆ๋Š”๋ฐ ์จ๋ณด๋‹ˆ๊นŒ ์—„์ฒญ ํŽธํ•˜๋‹ค

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ