BOJ/๐Ÿฅ‰

โ˜…Implementation&Simulation Upper-Beginner I - 25 Solvedโ˜…

metamong 2022. 11. 3.

* 2์ฐจ์› ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” implementation ์ฃผ์˜์ 

 

๐Ÿ™‹๐Ÿป‍โ™‚๏ธ 2์ฐจ์› ๋ฐฐ์—ด ํ‘œํ˜„์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ด์ค‘ list์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค: mํ–‰ n์—ด ๋ฐฐ์—ด์˜ ํ‘œํ˜„ (๋ชจ๋“  ์›์†Œ 0์œผ๋กœ ์ดˆ๊ธฐํ™”)

lst = [[0]*n for _ in range(m)]

 

๐Ÿ™‹๐Ÿป‍โ™‚๏ธ ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฑด, 2์ฐจ์› ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”ํ•  ๋•Œ, ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด์„œ๋Š” ์ ˆ๋Œ€ ์•ˆ๋จ

lst = [[0]*n]*n

 

โ˜… (๋งค์šฐ ์ค‘์š”) ์œ„์™€ ๊ฐ™์ด ์ดˆ๊ธฐํ™”ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. n๊ฐœ์˜ [0]*n์ด ๋ชจ๋‘ ๊ฐ™์€ ๊ฐ์ฒด๋กœ ์ธ์‹๋˜๊ธฐ ๋•Œ๋ฌธ. ์ฆ‰ 2์ฐจ์› ๋ฐฐ์—ด ์•ˆ์— ๋ฐฐ์—ด๋“ค์„ ์„ ์–ธํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ฐ๊ฐ์˜ ๋ฐฐ์—ด๋“ค์„ ์„ ์–ธ. ๋”ฐ๋ผ์„œ 2์ฐจ์› ๋ฐฐ์—ด์— ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๋ชจ๋“  ๋ฐฐ์—ด์— ๋™์‹œ์— ๊ฐ’์ด ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค! โ˜…


โ˜… 21665 ะœะธัˆะฐ ะธ ะฝะตะณะฐั‚ะธะฒ โ˜…

 

m,n=map(int,input().split())

f = [[0]*n for _ in range(m)]
l = [[0]*n for _ in range(m)]

for i in range(m):
    row = list(input())
    for j in range(n):
        f[i][j] = row[j]

input()

for i in range(m):
    row = list(input())
    for j in range(n):
        l[i][j] = row[j]

cnt = 0

for i in range(m):
    for j in range(n):
        if f[i][j] == l[i][j]:
            cnt += 1
print(cnt)

โ˜… 2738 ํ–‰๋ ฌ ๋ง์…ˆ โ˜…

 

N,M = map(int,input().split())

array1,array2=[],[]

for _ in range(N):
    array1.append(list(map(int, input().split())))

for _ in range(N):
    array2.append(list(map(int, input().split())))

for i in range(N):
    for j in range(M):
        print(array1[i][j] + array2[i][j], end=' ')
    print('')

 

ํ–‰๋ ฌ์€ 2์ฐจ์› list์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋‘ ๊ฐœ์˜ ํ–‰๋ ฌ ๊ฐ๊ฐ for๋ฌธ์„ ๋Œ๋ ค ํ–‰๋ ฌ ๋‘ ๊ฐœ๋ฅผ ์™„์„ฑํ•œ๋‹ค. ํ–‰๋ ฌ์„ ๊ฐ๊ฐ ์™„์„ฑํ•  ๋•Œ ํ•œ row๋‹น list์˜ ํ˜•ํƒœ๋กœ ์ง‘์–ด๋„ฃ์Œ. ์˜ˆ์ œ๋ฅผ ์ง‘์–ด๋„ฃ์—ˆ์„ ๋•Œ 2์ฐจ์› ํ–‰๋ ฌ์ด 2์ฐจ์› list๋กœ ํ‘œํ˜„๋œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค

#[[1, 1, 1], [2, 2, 2], [0, 1, 0]] [[3, 3, 3], [4, 4, 4], [5, 5, 100]]

โ˜… 2775 ๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ โ˜…

neighbors = [[0]*14 for _ in range(15)]
for i in range(14):
    neighbors[0][i] = i+1
for i in range(15):
    neighbors[i][0] = 1

for ho_index in range(1,14):
    for floor_index in range(1,15): #๋จผ์ € ๋™์ผ floor์—์„œ ์ญ‰!
        neighbors[floor_index][ho_index] = neighbors[floor_index-1][ho_index] + neighbors[floor_index][ho_index-1]

T = int(input())

for _ in range(T):
    k = int(input())
    n = int(input())
    print(neighbors[k][n-1])

 

 

๐Ÿฅฝ ์ธต์ˆ˜๋Š” 15๊ฐœ(0์ธต~14์ธต), ๊ทธ๋ฆฌ๊ณ  ํ˜ธ์ˆ˜๋Š” 14๊ฐœ(1ํ˜ธ~14ํ˜ธ) → ์•„ํŒŒํŠธ ๊ตฌ์กฐ์— ๋งž๊ฒŒ ๊ฐ ์ธต์„ row, ๊ฐ ํ˜ธ๋ฅผ column์ธ 2์ฐจ์› list์˜ ํ˜•ํƒœ๋กœ ์„ ์–ธ /0์ธต์˜ iํ˜ธ์— i๋ช… ๊ฑฐ์ฃผํ•˜๋ฏ€๋กœ for๋ฌธ ๋Œ๋ฆผ & ๊ฐ ์ธต์˜ 1ํ˜ธ๋Š” ๊ณ„์•ฝ์กฐํ•ญ์— ์˜ํ•ด ๋ชจ๋‘ 1๋ช…์”ฉ ๊ฑฐ์ฃผ

๐Ÿฅฝ ๊ณ„์•ฝ์กฐํ•ญ = 'a์ธต์˜ bํ˜ธ ๊ฑฐ์ฃผ์ž ์ˆ˜ = (a-1)์ธต์˜ 1ํ˜ธ ~ bํ˜ธ ๊ฑฐ์ฃผ์ž ์ˆ˜์˜ ํ•ฉ'

→ ๋‹ค๋ฅด๊ฒŒ ํ’€์–ด๋ณด์ž๋ฉด, 'a์ธต์˜ bํ˜ธ ๊ฑฐ์ฃผ์ž ์ˆ˜ = a์ธต์˜ (b-1)ํ˜ธ ๊ฑฐ์ฃผ์ž ์ˆ˜ + (a-1)์ธต์˜ bํ˜ธ ๊ฑฐ์ฃผ์ž ์ˆ˜ '

→ ๋”ฐ๋ผ์„œ ์œ„ ์‹์— ์˜ํ•ด 2์ค‘ for loop์„ ์ญ‰ ๋Œ๋ฆฌ๋ฉด 2์ฐจ์› list๋กœ ๊ฐ ์ธต๊ณผ ํ˜ธ์˜ ๊ฑฐ์ฃผ์ž ์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐ„ ํ˜•ํƒœ๋กœ ์™„์„ฑ!


โ˜… 14652 ๋‚˜๋Š” ํ–‰๋ณตํ•ฉ๋‹ˆ๋‹ค โ˜…

 

→ ์œ„ ๊ทธ๋ฆผ์—์„œ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ์™ผ์ชฝ ์œ„๋ถ€ํ„ฐ (0,0)์ด ์‹œ์ž‘๋˜๊ณ  ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ์ˆ˜๋ก y๊ฐ’์ด ์ฆ๊ฐ€, ์•„๋ž˜๋กœ ๊ฐˆ์ˆ˜๋ก x๊ฐ’์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

 ๋ฌธ์ œ ์ƒํ™ฉ์— ์˜ํ•ด x๊ฐ’์€ K๋ฅผ M์œผ๋กœ ๋‚˜๋ˆˆ ๋ชซ, y๋Š” ๋‚˜๋จธ์ง€

N,M,K = map(int, input().split())
print(K//M, K%M)

โ˜… 27239 ะจะฐั…ะผะฐั‚ะฝะฐั ะดะพัะบะฐ โ˜…

 

import math

chess=[]

for i in range(8,0,-1):
    start=i*8
    chess.append([i for i in range(start-7,start+1)])

N=int(input())
s='habcdefg'
print(s[N%8]+str(math.ceil(N/8)))

 

๐Ÿฅฝ ๋จผ์ € ์ฃผ์–ด์ง„ ๋Œ€๋กœ ์œ„ ์ฒด์ŠคํŒ 2์ฐจ์› ๋ฐฐ์—ด์„ list ์ค‘์ฒฉ์œผ๋กœ ๋งŒ๋“  ๋’ค, chessํŒ ํŠน์„ฑ์— ๋งž๊ฒŒ ๋ฌธ์ž์—ด indexing + ceil ํ•จ์ˆ˜ ๊ณ„์‚ฐ์œผ๋กœ ์ถœ๋ ฅ


โ˜… 2566 ์ตœ๋Œ“๊ฐ’ โ˜…

 

l=[]
x=[]
for _ in range(9):
    k=list(map(int,input().split()))
    l.append(k)
    x.append(max(k))
max_l = max(x)
print(max_l)
a,b=0,0
for i in l:
    a+=1
    b=0
    for j in i:
        b+=1
        if max_l == j:
            print(a,b)

 

๐Ÿฅฝ 2์ฐจ์› ๋ฐฐ์—ด ๋งŒ๋“ค๊ณ , ๊ทธ ์ค‘ ์ตœ๋Œ“๊ฐ’์„ for loop์„ ๋Œ๋ฉด์„œ ํ™•์ธํ•œ ๋’ค, col, row ๋ฒˆํ˜ธ ์ถœ๋ ฅ!


โ˜… 2445 ๋ณ„ ์ฐ๊ธฐ - 8 โ˜…

 

N=int(input())
for i in range(1,2*N):
    print('*'*min(i,2*N-i)+' '*(2*N-2*min(i,2*N-i))+'*'*min(i,2*N-i))

 

๐Ÿ‘จ‍๐Ÿ”ฌ ๊ฐ ์ค„์„ ์ฒซ๋ฒˆ์งธ ๋ณ„ + ๋นˆ์นธ + ๋‘๋ฒˆ์งธ ๋ณ„ ์ด๋ ‡๊ฒŒ ํฌ๊ฒŒ ์„ธ ํŒŒํŠธ๋กœ ๋‚˜๋ˆ„๊ณ , 1๋ถ€ํ„ฐ N๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ๊ฐ ์ค„์—์„œ์˜ ์ˆ˜์—ด ๊ทœ์น™์„ ์„ธ์šด๋‹ค.

→ x๋ฒˆ์งธ ์ค„์ด๋ผ๋ฉด ์ฒซ๋ฒˆ์งธ ๋ณ„์˜ ๊ฐœ์ˆ˜๋Š” min(x, 2*N-x) / ๋‘๋ฒˆ์งธ ๋นˆ์นธ์˜ ๊ฐœ์ˆ˜๋Š” 2*N-2*min(i,2*N-i) / ์„ธ๋ฒˆ์งธ ๋นˆ์นธ์˜ ๊ฐœ์ˆ˜๋Š” min(i,2*N-i)


โ˜… 2446 ๋ณ„ ์ฐ๊ธฐ - 9 โ˜…

N=int(input())
for i in range(1,2*N):print(' '*(min(i,2*N-i)-1)+'*'*(1+2*(N-min(2*N-i,i))))

 

๐Ÿ‘จ‍๐Ÿ”ฌ i๋ฒˆ์งธ ์ค„์ด๋ผ๋ฉด ์ฒซ๋ฒˆ์งธ ๋นˆ์นธ์˜ ๊ฐœ์ˆ˜๋Š” min(i,2*N-i)-1 / ๋‘๋ฒˆ์งธ ๋ณ„์˜ ๊ฐœ์ˆ˜๋Š” 1+2*(N-min(2*N-i,i))


โ˜… 2522 ๋ณ„ ์ฐ๊ธฐ - 12 โ˜…

 

N=int(input())
for i in range(1,2*N):
    print(' '*(N-min(i,2*N-i))+'*'*(min(i,2*N-i)))

 

๐Ÿ‘จ‍๐Ÿ”ฌ *์˜ ๊ฐœ์ˆ˜๋Š” min(i,2*N-i), ๋นˆ์นธ์˜ ๊ฐœ์ˆ˜๋Š” ์ „์ฒด N์—์„œ ํ•ด๋‹น *์˜ ๊ฐœ์ˆ˜๋ฅผ ๋บ€ ์ˆ˜๋งŒํผ ๋นˆ์นธ์„ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ์ฃผ๋ฉด ๋œ๋‹ค!


โ˜… 24408 Mult! โ˜…

 

start=0
for _ in range(int(input())):
    n=int(input())
    if start==0:
        divided=n
        start+=1
        continue
    
    if n%divided==0:
        start=0
        print(n)

 

๐Ÿ‘จ‍๐Ÿ”ฌ start flag ๋ณ€์ˆ˜์— ๋งž๊ฒŒ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ„์–ด ์ถœ๋ ฅํ•˜๊ฒŒ ํ•œ๋‹ค.


โ˜… 12790 Mini Fantasy War โ˜…

 

for _ in range(int(input())):
    a,b,c,d,e,f,g,h=map(int,input().split())
    l=[a+e,b+f,c+g,d+h]
    for i in range(4):
        if i in [0,1] and l[i] <1:
            l[i]=1
        elif i ==2 and l[i] < 0:
            l[i]=0
    print(l[0]+5*l[1]+2*(l[2]+l[3]))

โ˜… 2523 ๋ณ„ ์ฐ๊ธฐ - 13 โ˜…

 

N=int(input())
cnt=0
for i in range(1,2*N):
    if i>N:cnt-=1
    else:cnt+=1
    print('*'*cnt)

โ˜… 26772 Poziome serca โ˜…

 

a=''' @@@   @@@  
@   @ @   @ 
@    @    @ 
@         @ 
 @       @  
  @     @   
   @   @    
    @ @     
     @      '''
n=int(input())
for i in a.split('\n'):
    print(i*n)

 


โ˜… 2506 ์ ์ˆ˜๊ณ„์‚ฐ โ˜…

 

N=int(input())
l=map(int,input().split())
cnt,res=0,0
for i in l:
    if i:
        cnt+=1
        res+=cnt
    else:
        cnt=0
print(res)

โ˜… 5692 ํŒฉํ† ๋ฆฌ์–ผ ์ง„๋ฒ• โ˜…

 

import sys
input=sys.stdin.readline

def fac(n):
    k=1
    for i in range(1,n+1):
        k*=i
    return k

while 1:
    n=int(input())
    if n==0: break
    ans=0
    j=1
    for i in str(n)[::-1]:
        ans+=int(i)*(fac(j))
        j+=1
    print(ans)

 

๐Ÿ‘จ‍๐Ÿ”ฌ ํŒฉํ† ๋ฆฌ์–ผ์„ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ตฌํ˜„! ์ด ๋•Œ, ์ž๋ฆฌ์ˆ˜๊ฐ€ ์˜ฌ๋ผ๊ฐˆ ๋•Œ๋งˆ๋‹ค ํŒฉํ† ๋ฆฌ์–ผ N๊ฐ’์ด 1์”ฉ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ +=1์„ ์‚ฌ์šฉํ•ด ๊ฒฐ๊ณผ ๋ณ€์ˆ˜์— ๊ณ„์† add up


โ˜… 5613 ๊ณ„์‚ฐ๊ธฐ ํ”„๋กœ๊ทธ๋žจ โ˜…

 

total=0
before=0
while 1:
    x=input()

    if x=='=':
        print(total)
        break

    if x.isdigit():
        if before=='+' or before==0:
            total+=int(x)
        elif before=='-':
            total-=int(x)
        elif before=='*':
            total*=int(x)
        else:
            total//=int(x)
    else:
        before=x

 

๐Ÿ‘จ‍๐Ÿ”ฌ =์ผ ๊ฒฝ์šฐ ๋ฐ”๋กœ total์„ print, ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง€๋ฉด(isdigit()) ์•ž์˜ ๊ฒฐ๊ณผ before์— ๋”ฐ๋ผ ์—ฐ์‚ฐ ์ง„ํ–‰ / ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ๋ผ๋ฉด before์— ์—ฐ์‚ฐ์ข…๋ฅ˜ ๋„ฃ์Œ!


โ˜… 10810 ๊ณต ๋„ฃ๊ธฐ โ˜…

 

import sys
input=sys.stdin.readline

N,M=map(int,input().split())

arr=[0]*N

for _ in range(M):
    i,j,k=map(int,input().split())

    for x in range(i-1,j):
        arr[x] = k

print(*arr)

 

๐Ÿ‘จ‍๐Ÿ”ฌ ํŒŒ์ด์ฌ ๋ฐฐ์—ด์€ list๋กœ ๊ตฌํ˜„๋˜๊ณ , ๊บผ๋‚ด๋Š” ์—ฐ์‚ฐ์€ ํ•„์š”์—†์ด ๋‹จ์ˆœํžˆ = ์—ฐ์‚ฐ์ž๋กœ ๋„ฃ๊ธฐ๋งŒ ํ•˜๋ฉด ๊ธฐ์กด ๋‚ด์šฉ์€ ์‚ฌ๋ผ์ง€๊ณ  ์ƒˆ๋กœ์šด ๋‚ด์šฉ์ด ๋“ค์–ด๊ฐ„๋‹ค.


โ˜… 16175 General Election โ˜…

 

import sys
input=sys.stdin.readline

for _ in range(int(input())):
    N,M=map(int,input().split())
    votes=[0]*N
    for _ in range(M):
        i=0
        for vote in map(int,input().split()):
            votes[i] += vote
            i+=1
    print(votes.index(max(votes))+1)

 

๐Ÿ‘จ‍๐Ÿ”ฌ for๋ฌธ์„ ์‚ฌ์šฉํ•ด votes[i]์— ๋ˆ„์ ์œผ๋กœ ๊ฐ candidate๋ณ„๋กœ vote๋ฅผ ๋”ํ•˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ ์ตœ๋Œ“๊ฐ’์˜ index+1์ธ candidate number ์ถœ๋ ฅ!


โ˜… 10990 ๋ณ„ ์ฐ๊ธฐ - 15 โ˜…

 

N=int(input())

print(' '*(N-1)+'*')
for i in range(2,N+1):
    print(' '*(N-i)+'*'+' '*abs(2*(i-1)-1)+'*')

โ˜… 25527 Counting Peaks of Infection โ˜…

 

import sys
input=sys.stdin.readline

while 1:
    n=int(input())

    if n==0: break

    ans=0
    v_list = list(map(int,input().split()))

    for i in range(1,n-1):
        if v_list[i] > v_list[i-1] and v_list[i] > v_list[i+1]:
            ans+=1

    print(ans)

 

๐Ÿ‘จ‍๐Ÿ”ฌ peak์ด๋ž€ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์›์†Œ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ๋งŒ ์นด์šดํŠธํ•˜๋ฉด ๋œ๋‹ค.


โ˜… 10811 ๋ฐ”๊ตฌ๋‹ˆ ๋’ค์ง‘๊ธฐ โ˜…

 

N,M=map(int,input().split())

arr = [i for i in range(1,N+1)]

for _ in range(M):
    start,end=map(int,input().split())
    if (start-2)<0:
        arr[start-1:end] = arr[end-1::-1]
    else:
        arr[start-1:end] = arr[end-1:start-2:-1]

print(*arr)

โ˜… 1110 ๋”ํ•˜๊ธฐ ์‚ฌ์ดํด โ˜…

 

cnt=0
N=int(input())
bf=N
while 1:
    if len(str(bf))==1:
        bf=int('0'+str(bf))
    total=0
    for x in str(bf):
        total+=int(x)
    nf=int(str(bf)[-1]+str(total)[-1])
    cnt+=1
    if N==nf:
        print(cnt)
        break
    else:
        bf=nf

โ˜… 1547 ๊ณต โ˜…

 

import sys
input=sys.stdin.readline
M=int(input())
cups=[1,2,3]
for _ in range(M):
    x,y=map(int,input().split())
    xi,yi=cups.index(x),cups.index(y)
    cups[xi],cups[yi]=cups[yi],cups[xi]
print(cups[0])

โ˜… 10708 ํฌ๋ฆฌ์Šค๋งˆ์Šค ํŒŒํ‹ฐ โ˜…

import sys
input=sys.stdin.readline

N=int(input())
M=int(input())
targets=list(map(int,input().split()))
friends=[0]*N
for i in range(M):
    target=targets[i]
    pred=list(map(int,input().split()))
    cnt=0
    for p in range(len(pred)):
        if pred[p] == target:
            friends[p] += 1
        else: cnt+=1
    friends[target-1]+=cnt

print(*friends,sep='\n')

โ˜… 14174 Block Game โ˜…

import sys
input=sys.stdin.readline
from collections import Counter
N=int(input())
ans=[0]*26
for _ in range(N):
    a,b=input().strip().split(' ')
    x=Counter(a)
    y=Counter(b)
    for z in y.keys():
        if z in x:
            if x[z]<y[z]:
                x[z]=y[z]
        else:
            x[z]=y[z]
    for k in x:
        ans[ord(k)-97]+=x[k]
print(*ans,sep='\n')

 

๐Ÿ‘จ‍๐Ÿ”ฌ ๋‘ board๋ฅผ ํ•ฉ์ณ ๊ฐ ์•ŒํŒŒ๋ฒณ ๋นˆ๋„์˜ ์ตœ๋Œ“๊ฐ’๋งŒํผ ์—…๋ฐ์ดํŠธ


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๋Œ“๊ธ€