BOJ/🥈

★Implementation&Simulation Intermediate II - 3 Solved★

metamong 2024. 8. 29.

★ 30458 팰린드롬 애너그램 ★

★Implementation&Simulation Intermediate II - 3 Solved★ - undefined - undefined - ★ 30458 팰린드롬 애너그램 ★
★Implementation&Simulation Intermediate II - 3 Solved★ - undefined - undefined - ★ 30458 팰린드롬 애너그램 ★

import sys
input=sys.stdin.readline

N=int(input())
S=input().rstrip()
if N%2==1:
    left,right=S[:len(S)//2],S[len(S)//2+1:]
else:
    left,right=S[:len(S)//2],S[len(S)//2:]
s=left+right
kinds=set(s)

for kind in kinds:
    if s.count(kind)%2!=0:
        print('No')
        sys.exit()
print('Yes')

 

😘 바꾸는 횟수는 무제한이므로, 주어진 문자열의 길이가 짝수/홀수에 따라 주어진 문자의 kind 개수 짝/홀 따지면 된다.


★ 30618 donstructive ★

★Implementation&Simulation Intermediate II - 3 Solved★ - undefined - undefined - ★ 30618 donstructive ★
★Implementation&Simulation Intermediate II - 3 Solved★ - undefined - undefined - ★ 30618 donstructive ★

N=int(input())
ans=[0 for _ in range(N)]

n=1
for i in range(N//2):
    ans[i]=n
    ans[(N-1)-i]=n+1
    n+=2
if 0 in ans:
    ans[ans.index(0)] = N
print(*ans)

 

😘 연속 부분 수열의 합이 최대가 되게 하는 순열은, 가운데 갈수록 점점 숫자를 키우게 하는 수열. N개의 개수가 있다면 N//2번 만큼 1부터 점점 숫자를 키워 양쪽에 배치하고 가운데로 진행하며 숫자 올리면 된다.


★ 30803 수도꼭지 ★

★Implementation&Simulation Intermediate II - 3 Solved★ - undefined - undefined - ★ 30803 수도꼭지 ★
★Implementation&Simulation Intermediate II - 3 Solved★ - undefined - undefined - ★ 30803 수도꼭지 ★

import sys
input=sys.stdin.readline

N=int(input())
opened=list(map(int,input().split()))
Q=int(input())
orders=[]
closed=[0]*N
for _ in range(Q):
    orders.append(list(map(int,input().split())))
res=[sum(opened)]
cursum=sum(opened)
for order in orders:
    if order[0]==1:
        if opened[order[1]-1]>0:
            res.append(cursum-opened[order[1]-1]+order[2])
            opened[order[1]-1]=order[2]
        else:
            closed[order[1]-1] = order[2]
            res.append(cursum)       
    else:
        if opened[order[1]-1]>0:
            res.append(cursum-opened[order[1]-1])
            opened[order[1]-1],closed[order[1]-1]=closed[order[1]-1],opened[order[1]-1]
        else:
            res.append(cursum+closed[order[1]-1])
            opened[order[1]-1],closed[order[1]-1]=closed[order[1]-1],opened[order[1]-1]       
    cursum=res[-1]
print(*res,sep='\n')

 

😘 문제에 주어진대로 그대로 시뮬레이션 진행


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글