โ 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)
'BOJ > ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ Binary Search Intermediate I - 9 Solvedโ (0) | 2022.12.07 |
---|---|
โ Greedy Intermediate I - 20 Solvedโ (0) | 2022.12.05 |
โ Math & Geometry Intermediate I - 13 Solvedโ (0) | 2022.11.22 |
โ BF Intermediate I - 14 Solvedโ (0) | 2022.11.21 |
โ Sorting Intermediate I - 18 Solvedโ (0) | 2022.11.20 |
๋๊ธ