BOJ/๐Ÿฅˆ

โ˜…Implementation&Simulation Intermediate I - 20 Solvedโ˜…

metamong 2022. 11. 28.

โ˜… 2941 ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ โ˜…

 

s=input()
for c in ['c=','c-','dz=','d-','lj','nj','s=','z=']:
    if c in s:s=s.replace(c,'*')
print(len(s))

 

๐ŸŒณ replace()


โ˜… 1316 ๊ทธ๋ฃน ๋‹จ์–ด ์ฒด์ปค โ˜…

 

import sys
input=sys.stdin.readline
t=0
for _ in range(int(input())):
    s=input()
    f=0
    for i in range(1,len(s)):
        if s[i]!=s[i-1]:
            if s[i] in s[:i]:
                f+=1
                break
    if f==0:t+=1
print(t)

โ˜… 1213 ํŒฐ๋ฆฐ๋“œ๋กฌ ๋งŒ๋“ค๊ธฐ โ˜…

 

import sys
input = sys.stdin.readline

name = input().rstrip()
chs = set(name)
mid = 0
flag = 0

for ch in chs:
    if name.count(ch) % 2 == 1: #ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ์ด ์žˆ๋‹ค๋ฉด
        flag += 1
        mid = ch #์ด๋ฅผ ์ค‘์•™์— ๋ฐฐ์น˜
        if flag == 2: #ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ์€ ์ตœ๋Œ€ 1๊ฐœ๋งŒ ์กด์žฌํ•˜๋ฏ€๋กœ 2๊ฐœ ์ด์ƒ์ด๋ฉด ๋ถˆ๊ฐ€๋Šฅ
            print("I'm Sorry Hansoo")
            break

if flag < 2: #(1)ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ์ด 1๊ฐœ / (2)๋ชจ๋“  ์•ŒํŒŒ๋ฒณ์ด ์ง์ˆ˜ ๊ฐœ์ˆ˜
    
    if mid != 0: #(1)ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ์ด 1๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ
        n = list(name)
        p = n.index(mid)
        del(n[p])
        name = ''.join(n) #1๊ฐœ์ธ ํ™€์ˆ˜ ์•ŒํŒŒ๋ฒณ๋งŒ ์‚ญ์ œ
    
    name = list(name)
    name.sort() #์‚ฌ์ „ ์ˆœ ์•ž์„œ๋Š” ๊ฑธ ๋จผ์ € ์ถœ๋ ฅ ํ•„์š”
    half_chs = name[::2] #์ •๋‹ต์˜ ์ ˆ๋ฐ˜๋งŒ ๋–ผ์˜ค๊ธฐ
    
    if flag == 1: #(1)ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ์ด 1๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ
        print(''.join(half_chs)+mid+''.join(half_chs[::-1]))
    else: #(2)๋ชจ๋“  ์•ŒํŒŒ๋ฒณ์ด ์ง์ˆ˜ ๊ฐœ์ˆ˜
        print(''.join(half_chs)+''.join(half_chs[::-1]))

 

๐ŸŒณ โ˜… ํ™€์ˆ˜ ๊ฐœ์ˆ˜/์ง์ˆ˜ ๊ฐœ์ˆ˜ โ˜…

โ‘  ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ ์กด์žฌํ•œ๋‹ค๋ฉด

→ ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ 1๊ฐœ ์กด์žฌ: ์ •์ค‘์•™์— ๋ฐฐ์น˜

→ ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ 2๊ฐœ ์ด์ƒ ์กด์žฌ: palindrome์„ ๋งŒ๋“ค ์ˆ˜ ์—†์Œ - error ๋ฐœ์ƒ

 

โ‘ก ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด

→ palindrome ๊ฐ€๋Šฅ

 

๐ŸŒณ โ˜… ์‚ฌ์ „ ์ˆœ ์•ž์„œ๋Š” ๊ฑธ ์ถœ๋ ฅ โ˜…

→ list์— ๋„ฃ๊ณ  sort()ํ•˜๋ฉด ์ž๋™์ ์œผ๋กœ ์‚ฌ์ „์ˆœ์œผ๋กœ ๋‚˜์—ด. ์ด ๋•Œ, index 0๋ถ€ํ„ฐ 2์”ฉ ๊ฑด๋„ˆ๋›ด ๊ฒฐ๊ณผ๋ผ๋ฆฌ ๋ชจ์—ฌ ํŒฐ๋ฆฐ๋“œ๋กฌ ์ •๋‹ต์˜ ์™ผ์ชฝ ์ ˆ๋ฐ˜์— ๋ฐฐ์น˜, ์ด๋ฅผ ๊ฑฐ๊พธ๋กœ ๋Œ๋ฆฐ ๋’ค ํŒฐ๋ฆฐ๋“œ๋กฌ ์ •๋‹ต์˜ ์˜ค๋ฅธ์ชฝ ์ ˆ๋ฐ˜์— ๋ฐฐ์น˜


โ˜… 26587 Reverse โ˜…

 

while 1:
    try:
        words=input().split()
        length=len(words)
        reversed_indexes=[]
        reversed_words=[]
        for i in range(length):
            if words[i][0] in 'aeiouAEIOU':
                reversed_indexes.append(i)
        reversed_indexes=reversed_indexes[::-1]
        j=0
        for word in words:
            if word[0] not in 'aeiouAEIOU':
                reversed_words.append(word)
            else:
                reversed_words.append(words[reversed_indexes[j]])
                j+=1

        print(*reversed_words)
    except:break

 

๐ŸŒณ๋ชจ์Œ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋‹จ์–ด๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด, ํ•ด๋‹น index๋ฅผ ๋ณ„๋„์˜ list์— ์ €์žฅํ•œ ๋’ค, list๋ฅผ [::-1]๋กœ ๊ฑฐ๊พธ๋กœ ๋Œ๋ฆฐ๋‹ค. ๊ทธ ๋‹ค์Œ ๋‹ค์‹œ for๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด์„œ ๋ชจ์Œ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋‹จ์–ด์˜ ์œ„์น˜๋ผ๋ฉด, ์ €์žฅํ•œ ๋ณ„๋„์˜ index list ์ฒซ๋ฒˆ์งธ ๋‹จ์–ด๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜จ๋‹ค.


โ˜… 1972 ๋†€๋ผ์šด ๋ฌธ์ž์—ด โ˜…

 

import sys
input=sys.stdin.readline

while 1:
    string = input().rstrip()
    if string == '*': break

    ans_dict = dict()

    start_indexes = [i for i in range(len(string)-1)]
    flag = True
    for start_index in start_indexes:
        l=[]
        for i in range(len(string)-1-start_index):
            l.append(string[i]+string[i+start_index+1])
        if len(l) != len(set(l)):
            flag=False
            break
    if flag:
        print(f'{string} is surprising.')
    else:
        print(f'{string} is NOT surprising.')

 

๐ŸŒณ set()์„ ์‚ฌ์šฉํ•ด ์ค‘๋ณต ์—ฌ๋ถ€ ํ™•์ธ + flag ๋ณ€์ˆ˜๋กœ ํ™•์ธ (break ์žฅ์น˜)


โ˜… 25206 ๋„ˆ์˜ ํ‰์ ์€ โ˜…

 

import sys
input=sys.stdin.readline

credit=[]
scores=[]
score_alphabets={'A+':4.5, 'A0':4.0, 'B+':3.5, 'B0':3.0, 'C+':2.5, 'C0':2.0, 'D+':1.5, 'D0':1.0, 'F':0}

for _ in range(20):
    info = input().rstrip()
    hak_jum = info.split()[2]

    if hak_jum != 'P':
        credit.append(float(info.split()[1]))
        scores.append(score_alphabets[hak_jum])

total = 0

for c,s in zip(credit,scores):
    total += c*s

print(total/sum(credit))

 

๐ŸŒณ split()์œผ๋กœ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด ํ•™์ ๊ณผ ํ‰์ ์— ๊ฐ๊ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ €์žฅ / dictionary ์‚ฌ์šฉํ•ด ํ‰์ ์— ๋งž๋Š” ํ•™์  ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ / zip()์œผ๋กœ ํ•œ ๋ฒˆ์— total ๊ตฌํ•˜๊ณ  ๋ฐ”๋กœ ์ตœ์ข… ๊ฒฐ๊ณผ ์ถœ๋ ฅ!


โ˜… 18221 ๊ต์ˆ˜๋‹˜ ์ €๋Š” ์ทจ์—…ํ• ๋ž˜์š” โ˜…

 

import sys
input=sys.stdin.readline

N=int(input())
arr=[]
def getdist(x1,y1,x2,y2):
    return ((x2-x1)**2 + (y2-y1)**2)**(1/2)

for row_ind in range(N):
    col=list(map(int,input().split()))
    arr.append(col)
    for col_ind in range(N):
        if col[col_ind] == 5:
            professor=(row_ind,col_ind)
        elif col[col_ind] == 2:
            me=(row_ind,col_ind)


if getdist(professor[0],professor[1],me[0],me[1]) >= 5:
    x1,y1,x2,y2=professor[0],professor[1],me[0],me[1]
    cnt=0
    for x in range(min(x1,x2),max(x1,x2)+1):
        for y in range(min(y1,y2),max(y1,y2)+1):
            if arr[x][y] == 1:
                cnt+=1
    if cnt>=3:
        print(1)
    else:
        print(0)
else:
    print(0)

โ˜… 1244 ์Šค์œ„์น˜ ์ผœ๊ณ  ๋„๊ธฐ โ˜…

 

import sys,math
input=sys.stdin.readline
n=int(input())
l=list(map(int,input().split()))

for _ in range(int(input())):
    gender, num = map(int,input().split())
    if gender == 1:
        for i in range(1,n+1):
            if i%num==0:
                l[i-1] = int(not bool(l[i-1]))
    else: #gender = 2
        left,right=num-1,n-num
        limit=min(left,right)
        l[num-1] = int(not bool(l[num-1]))
        for j in range(1,limit+1):
            ll,rr=num-1-j,num-1+j
            if l[ll] == l[rr]:
                l[ll] = int(not bool(l[ll]))
                l[rr] = int(not bool(l[rr]))
            else:
                break

for x in range(math.ceil(n/20)):
    print(*l[20*x:20*x+20])

 

๐ŸŒณ 20๊ฐœ์”ฉ ๋งค ์ค„๋งˆ๋‹ค ์ถœ๋ ฅ์€ math.ceil()๋กœ ๋ฒ”์œ„ ์ •ํ•˜๊ณ  20*x๋ถ€ํ„ฐ index ์‹œ์ž‘ํ•ด์„œ 20๊ฐœ์”ฉ ์ถœ๋ ฅ ๊ตฌํ˜„ / ๋‚˜๋จธ์ง€ ๊ตฌํ˜„์€ ์—ฌ์ž์ผ ๊ฒฝ์šฐ๋งŒ ์ขŒ์šฐ๋Œ€์นญ limit ๊ฑธ์–ด์„œ ์ง„ํ–‰ / 1์„ 0์œผ๋กœ, 0์„ 1๋กœ ๋ฐ”๊พธ๋Š” ์ฝ”๋“œ๋Š” bool ํ™œ์šฉํ•ด์„œ int(not bool) ์ฝ”๋“œ ์ž‘์„ฑ


โ˜… 4402 Soundex โ˜…

 

soundex='01230120022455012623010202'

while 1:
    try:
        word = input().rstrip()
        ans=''
        bf = '!'
        for w in range(len(word)):
            if word[w] != bf:
                k = soundex[ord(word[w])-65]
                if k != '0':
                    if w >= 1:
                        if soundex[ord(word[w])-65] != soundex[ord(word[w-1])-65]:
                            ans+=(soundex[ord(word[w])-65])
                    else:
                        ans+=(soundex[ord(word[w])-65])
            bf = word[w]
        print(ans)

    except:
        break

 

๐ŸŒณ ์ด์ „๊ณผ soundex์˜ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜, 0์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋งŒ ์ฃผ์˜ํ•ด์„œ ans ๋ฌธ์ž์—ด์— ๋ถ™์—ฌ์„œ ์ถœ๋ ฅ


โ˜… 20200 Crtanje โ˜…

import sys
input=sys.stdin.readline

n=int(input())
chs=list(input().rstrip())
ans=[['.']*n for _ in range(201)]
row = 100

for ch_i in range(n):
    if chs[ch_i] == '+':
        ans[row][ch_i] = '/'
        row-=1
    elif chs[ch_i] == '-':
        row+=1
        ans[row][ch_i] = '\\'
    else: #chs[ch_i] == '='
        ans[row][ch_i] = '_'

for x in ans:
    if '/' in x or '\\' in x or '_' in x:
        print(*x,sep='')

 

๐ŸŒณ ์ตœ๋Œ€ 201๊ฐœ row. ์˜ค๋ฅด๋ฝ๋‚ด๋ฆฌ๋ฝ์œ ์ง€ ๊ทธ๋ž˜ํ”„ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„. ๋จผ์ € .์œผ๋กœ ๋ชจ๋‘ ๊ตฌ์„ฑํ•˜๊ณ  row์— ๋”ฐ๋ผ ๋„ฃ๊ณ  ๋ฐ”๋กœ ๊ตฌํ˜„(๊ธฐํ˜ธ \๋Š” ์•ž์— \ ๋” ๋ถ™์ด๊ธฐ)


โ˜… 15721 ๋ฒˆ๋ฐ๊ธฐ โ˜…

import sys
input=sys.stdin.readline

A=int(input())
T=int(input())
shout=int(input())
noise = '๋ป”' if shout == 0 else '๋ฐ'
humans=['']*A
cycle=1
i=0
while 1:
    sentence='๋ป”๋ฐ๋ป”๋ฐ'+'๋ป”'*(cycle+1)+'๋ฐ'*(cycle+1)
    cycle+=1
    for x in sentence:
        if noise == x:
            T-=1
            if T == 0:
                print(i)
                sys.exit()
                
        i+=1
        if i >= A:
            i=0

๐ŸŒณ cycle๋งˆ๋‹ค ํ›„๋ฐ˜ ๋ป”๊ณผ ๋ฐ์˜ ๊ฐœ์ˆ˜ + 1 / ์›์ด๋ฏ€๋กœ i index๊ฐ€ A ์ด์ƒ์ผ ๊ฒฝ์šฐ i = 0 ์›์œ„์น˜. T๋ฒˆ์งธ์—์„œ ์‹œ์ž‘ํ•ด noise ๋งŒ๋‚ ๋•Œ๋งˆ๋‹ค -=1


โ˜… 2563 ์ƒ‰์ข…์ด โ˜…

import sys
input=sys.stdin.readline

arr = [[0]*100 for _ in range(100)]

for _ in range(int(input())):
    x,y=map(int,input().split())
    for row in range(y,y+10):
        for col in range(x,x+10):
            arr[row][col] = 1
cnt=0
for x in range(100):
    for y in range(100):
        if arr[x][y]:
            cnt+=1
print(cnt)

๐ŸŒณ ๊ตฌํ˜„ ์•„์ด๋””์–ด: ๋ชจ๋“  ๋ฐฐ์—ด์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ๊ฐ ์ƒ‰์ข…์ด์˜ ์˜์—ญ๋งŒ 1๋กœ ๋งˆํ‚น. ์ „์ฒด๋ฅผ ๋Œ๋ ค์„œ 1๋กœ ๋งˆํ‚น๋œ ๋ถ€๋ถ„๋งŒ ์นด์šดํŒ…ํ•˜๋ฉด ๊ฒน์นจ์— ์ƒ๊ด€์—†์ด ๋„“์ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.


โ˜… 25185 ์นด๋“œ ๋ฝ‘๊ธฐ โ˜…

import sys
input=sys.stdin.readline

T=int(input())

for _ in range(T):
    cards=list(input().rstrip().split())
    check_duplicates = set(cards)
    cnts=[]
    msp=[[],[],[]]
    got_answer = False
    for pair in check_duplicates:
        if pair[1] == 'm':
            msp[0].append(int(pair[0]))
        elif pair[1] == 's':
            msp[1].append(int(pair[0]))
        else:
            msp[2].append(int(pair[0]))
        cnts.append(cards.count(pair))
    if cnts == [2,2]:
        got_answer = True
        print(':)')
    for cnt in cnts:
        if cnt == 3 or cnt == 4:
            got_answer = True
            print(':)')
            break
    for pair in msp:
        pair.sort()
    if not got_answer:
        for x in msp:
            if len(x)>=3:
                if len(x) == 3:
                    if x[0]+ 1 == x[1] and x[1]+1 == x[2]:
                        got_answer = True
                        print(':)')
                        break
                else: #len(x) == 4
                    if x[0]+1 == x[1]:
                        if x[1]+1 == x[2]:
                            got_answer = True
                            print(':)')
                            break
                    else:
                        if x[1]+1 == x[2]:
                            if x[2]+1 == x[3]:
                                got_answer = True
                                print(':)')
                                break

    if not got_answer:
        print(':(')

โ˜… 8896 ๊ฐ€์œ„ ๋ฐ”์œ„ ๋ณด โ˜…

import sys
input=sys.stdin.readline

for _ in range(int(input())):
    N=int(input())
    robots=[]
    for i in range(N):
        robots.append([i+1]+list(input().rstrip()))
    winners=[i for i in range(1,N+1)]
    num_of_rounds = len(robots[1])-1
    for i in range(num_of_rounds):
        bets=[]
        rsp=[]
        for robot in robots:
            if robot[0] in winners: #let this robot begin in the game
                bets.append((robot[0],robot[i+1]))
                rsp.append(robot[i+1])
        if len(set(rsp)) not in [1,3]: #cut losers
            if 'R' not in set(rsp): #only 'S' & 'P'
                for bet in bets:
                    if bet[1] == 'P': #loser
                        winners.remove(bet[0])
            elif 'S' not in set(rsp): #only 'R' & 'P'
                for bet in bets:
                    if bet[1] == 'R': #loser
                        winners.remove(bet[0])
            else: #only 'R' & 'S'
                for bet in bets:
                    if bet[1] == 'S': #loser
                        winners.remove(bet[0])

    if len(winners)>1:
        print(0)
    else:
        print(winners[0])

๐ŸŒณ ๊ตฌํ˜„ ์•„์ด๋””์–ด: ๊ฐ ๋กœ๋ด‡์˜ ๋ฒˆํ˜ธ๋ฅผ ๋‹ฌ๊ณ  ๋‹ค๋‹ˆ๋ฉด์„œ winners list์— ํ•ด๋‹น ๊ฐ€์œ„/๋ฐ”์œ„/๋ณด๊ฐ€ (์ง€๋Š” ํŽธ) ์žˆ๋‹ค๋ฉด remove. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋‘ ๊ฐ™์€ ๊ฑธ ๋‚ด๊ฑฐ๋‚˜ ๋ชจ๋‘ ๋‹ค๋ฅธ ๊ฑธ ๋‚ด๋Š” ๊ฒฝ์šฐ๋Š” len(set) ํ™œ์šฉ


โ˜… 4821 ํŽ˜์ด์ง€ ์„ธ๊ธฐ โ˜…

import sys
input=sys.stdin.readline

while 1:
    total = int(input())
    if total == 0:
        break
    pages=[0]*total
    ranges=list(input().rstrip().split(','))
    for x in ranges:
        if '-' not in x:
            if 1<=int(x)<=total:
                pages[int(x)-1] += 1
        else:
            start,end=x.split('-')[0],x.split('-')[1]
            start,end=int(start),int(end)
            if start <= end:
                for y in range(start,end+1):
                    if y>total or y<1:
                        break
                    pages[y-1]+=1
    ans = [True for page in pages if page]
    print(sum(ans))

 

๐ŸŒณ ํŒŒ์‹ฑ ์ž˜ํ•˜๊ณ  ํŽ˜์ด์ง€ ๋ฒ”์œ„ ๋„˜์–ด๊ฐˆ ๊ฒฝ์šฐ๋งŒ ์กฐ์ ˆํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๊ฒน์น˜๋Š” ๋ฒ”์œ„์™€ ์ƒ๊ด€ ์—†์ด 0์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ list pages ๋งŒ๋“ค์–ด์„œ page ๋ฒ”์œ„์— ํ•ด๋‹น๋˜๋ฉด 1 ์ฆ๊ฐ€ํ•ด, 0๋ณด๋‹ค ํฐ page๋งŒ ์นด์šดํŠธํ•ด์„œ ์ถœ๋ ฅ


โ˜… 30648 ํŠธ๋ฆญ ํ”Œ๋ผ์›Œ โ˜…

import sys
input=sys.stdin.readline
a,b=map(int,input().split())
R=int(input())
garden=[[x for x in range(R-i)] for i in range(R)] 
garden[a][b] = '!'
time=0
while 1:
    time+=1
    if (a+1)+(b+1)<R:
        a,b=a+1,b+1
    else:
        a,b=a//2,b//2
        
    if garden[a][b] == '!':
            print(time)
            break
    else:
        garden[a][b] = '!'

 

๐ŸŒณ ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ๋Œ€๋กœ ๊ทธ๋Œ€๋กœ ์ง„ํ–‰


โ˜… 30875 Recovering the Region โ˜…

import sys
input=sys.stdin.readline
N=int(input())

for _ in range(N):
    input()
n=1
for _ in range(N):
    x=[n]*N
    print(*x)
    n+=1

 

๐ŸŒณ ๊ฐ€๋กœ์ค„์ด๋‚˜ ์„ธ๋กœ์ค„์„ ๊ตฌ์—ญ์œผ๋กœ ๋‹จ์ˆœํžˆ ์„ค์ •ํ•ด์ฃผ๋Š” ๋ฐœ์ƒ!


โ˜… 13243 Non-decreasing subsegment โ˜…

import sys
input=sys.stdin.readline

n=int(input())
l=list(map(int,input().split()))
ans=l[0]
cur=l[0]
ans_length=1
cur_length=1
for elem_i in range(1,n):
    if l[elem_i] >= l[elem_i-1]:
        cur+=l[elem_i]
        cur_length+=1
        if cur_length > ans_length:
            ans=cur
            ans_length=cur_length
    else:
        cur=l[elem_i]
        cur_length=1
print(ans_length,ans)

 

๐ŸŒณ ์—ฐ์†ํ•œ ์ˆ˜์—ด ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ธธ์ด์—์„œ์˜ ์ˆ˜์—ด ๋‚ด์˜ ์ˆซ์ž ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ. ๊ฐ€์žฅ ๊ธด ๊ธธ์ด์˜ ์ˆ˜์—ด์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋‹ค๋ฉด ์™ผ์ชฝ ๊ธฐ์ค€ ๋จผ์ € ๋“ฑ์žฅํ•˜๋Š” ์ˆ˜์—ด์„ ๊ณ ๋ฅด๊ธฐ. non-decreasingํ•  ๊ฒฝ์šฐ ans_length๋ณด๋‹ค cur_length ๊ธธ ๊ฒฝ์šฐ ans_length update / ans๋„ cur์—์„œ update. for๋ฌธ ๋Œ๋ ค์„œ ๋ˆ„์ ์œผ๋กœ ์ผ์ • ์กฐ๊ฑด์— ๋งž์œผ๋ฉด ์—…๋ฐ์ดํŠธ ๋˜๊ฒŒ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.


โ˜… 29791 ์—๋ฅด๋‹ค ๋…ธ๋ฐ”์™€ ์˜ค๋ฆฌ์ง„ ์Šคํ‚ฌ โ˜…

import sys
input=sys.stdin.readline
N,M=map(int,input().split())
A,B=sorted(list(map(int,input().split()))),sorted(list(map(int,input().split())))
count_a,count_b=0,0
start_a,start_b=-100,-360

for a in A:
    if (a-start_a)>=100:
        count_a+=1
        start_a=a  

for b in B:
    if (b-start_b)>=360:
        count_b+=1
        start_b=b   

print(count_a,count_b)

 

๐ŸŒณ ์žฌ์‚ฌ์šฉ ๋Œ€๊ธฐ ์‹œ๊ฐ„๋ณด๋‹ค ๋ฉด์—ญ ์‹œ๊ฐ„์ด A์™€ B ๋ชจ๋‘ ์งง์œผ๋ฏ€๋กœ ๋ฉด์—ญ์‹œ๊ฐ„์€ ์ƒ๊ด€ x. ์žฌ์‚ฌ์šฉ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๊ฐ„๊ฒฉ์œผ๋กœ ์žฌ์‚ฌ์šฉ ๋Œ€๊ธฐ ์‹œ๊ฐ„๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ์นด์šดํŠธ. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์‹œ๊ฐ„์œผ๋กœ ๊ธฐ์ค€ ์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ. ๋‹จ์ˆœ for๋ฌธ ๋Œ๋ฉฐ ์นด์šดํŠธ ์—…๋ฐ์ดํŠธํ•ด์„œ ์นด์šดํŠธ ์ตœ์ข… ์ถœ๋ ฅ


โ˜… 10190 Acronyms โ˜…

import sys
input=sys.stdin.readline

N=int(input())

for _ in range(N):
    acronym,n=input().rstrip().split()
    print(acronym)
    for _ in range(int(n)):
        phrase_input=input().rstrip()
        phrase=phrase_input.split()
        is_answer=True
        if len(phrase) == len(acronym):
            for lid in range(len(phrase)):
                if phrase[lid][0] != acronym[lid]:
                    is_answer = False
                    break
        else:
            is_answer = False
        if is_answer:
            print(phrase_input)

๋Œ“๊ธ€