반응형
from collections import deque

n, m = map(int,input().split())
temp = []
for _ in range(n):
    aaa = input()
    aa = []
    for a in aaa:
        aa.append( int(a))

    temp.append(aa)

# print(temp)
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]


visited=[(0,0)]
round = 0
stack = deque ()
stack.append((0,0, 0) )
pointX = 0
pointY = 0
while pointX != n-1 or pointY != m-1:
    pointX, pointY, round =stack.popleft()
    for i in range(4):
        temp_pointX  =pointX+ dx[i]
        if temp_pointX <0 or temp_pointX> n-1:
            continue
        temp_pointY  =pointY+ dy[i]
        if temp_pointY <0 or temp_pointY >m-1:
            continue
        if temp[temp_pointX][temp_pointY] ==0:
            continue
        else:
            temp[temp_pointX][temp_pointY] = 0
            stack.append((temp_pointX, temp_pointY, round+1) )


print(round+1)
반응형
반응형
from copy import deepcopy


n= int(input())
q = int(input())
temp_ans = [[0 for _ in range(n)] for k in range(n)  ]

center = n//2

temp_ans[center][center]=1
temp_ans[center-1][center]=2
temp_ans[center-1][center+1]=3
temp_ans[center][center+1]=4
temp_ans[center+1][center+1]=5
temp_ans[center+1][center]=6
temp_ans[center+1][center-1]=7
temp_ans[center][center-1]=8
temp_ans[center-1][center-1]=9
temp_list =[(center,center), (center-1,center), (center-1,center+1), (center,center+1),(center+1,center+1), (center+1,center),(center+1,center-1),(center,center-1),(center-1,center-1)]
now= (center-1, center-1)

root ="up"
if n>3:
  for i in range(10, n**2+1):
    if root =="up":
      if temp_ans[now[0]][ now[1]+1] !=0:
        temp_ans[now[0]-1][now[1]] = i
        now = (now[0]-1, now[1])
      else:
        temp_ans[now[0]][now[1]+1] = i
        now = (now[0], now[1]+1)
        root="right"
      j,k = now
      temp_list.append( (j,k))
      continue
    if root =="right":
      if temp_ans[now[0]+1][ now[1]] !=0:
        temp_ans[now[0]][now[1]+1] = i
        now = (now[0], now[1]+1)

      else:
        temp_ans[now[0]+1][now[1]] = i
        now = (now[0]+1, now[1])

        root="down"
      j,k = now
      temp_list.append( (j,k))
      continue
    if root =="down":
      if temp_ans[now[0]][ now[1]-1] !=0:
        temp_ans[now[0]+1][now[1]] = i
        now = (now[0]+1, now[1])

      else:
        temp_ans[now[0]][now[1]-1] = i
        root="left"
        now = (now[0], now[1]-1)
      j,k = now
      temp_list.append( (j,k))
      continue 
    if root =="left":
      if temp_ans[now[0]-1][ now[1]] !=0:
        temp_ans[now[0]][now[1]-1] = i
        now = (now[0], now[1]-1)

      else:
        temp_ans[now[0]-1][now[1]] = i
        root="up"
        now = (now[0]-1, now[1])
      j,k = now
      temp_list.append( (j,k))
      continue 


for row in temp_ans:
  for col in row:
    print(col, end=" ")
  print(sep='\n')

j,k =  temp_list[q-1]
print(j+1, k+1)
반응형
반응형
n = int(input())
temp=0
temp_counter={}
for i in range(n):
    a,b = map(int,input().split())
    if a in list(temp_counter.keys()):
        if b != temp_counter[a]:
            temp +=1
            temp_counter[a]=b
    else:
        temp_counter[a]=b

print(temp)
반응형
반응형
temp = []
for _ in range(5):
  temp.append(list(map(int,input().split())))

bingo = []
for __ in range(5):
  bingo.append(list(map(int,input().split())))

def bingo_check(temp):
  bingo_count=0
  for line in temp:
    if sum(line) == 0:
      bingo_count +=1

  for i in range(5):
    if temp[0][i]+temp[1][i]+temp[2][i]+temp[3][i]+temp[4][i] ==0:
      bingo_count+=1
  
  if temp[4][0]+temp[3][1]+temp[2][2]+temp[1][3]+temp[0][4] ==0:
    bingo_count+=1
  
  if temp[0][0]+temp[1][1]+temp[2][2]+temp[3][3]+temp[4][4] ==0:
    bingo_count +=1
  
  return bingo_count


def answer_check(bingo, temp):
  answer=0
  for order in bingo:
    for num in order:
      answer+=1
      for i in range(5):
        for j in range(5):
          if temp[i][j] == num:
            temp[i][j] = 0
            if bingo_check(temp)>=3:
              return(answer)

print(answer_check(bingo, temp))
반응형
반응형
quack = input()

next_q ={
  "q":"u",
  "u":"a",
  "a":"c",
  "c":"k",
  "k":"q"
}

temp=[]
printm1=False
for alphabet in quack:
  last_change = " "
  if len(temp)==0 and alphabet =="q":
    temp.append(alphabet)
    continue
  else:
    for temp_index in range(len(temp)):
      if next_q[temp[temp_index][-1]] == alphabet:
        temp[temp_index] += alphabet
        last_change = temp[temp_index]
        break
    if alphabet =="q" and last_change[-1] !="q":
      temp.append("q")
    if alphabet !="q" and last_change==" ":
      printm1 =True

for quackquack in temp:
  if quackquack[-1] !="k":
    printm1=True

if printm1:
  print(-1)

else:
  print(len(temp))
반응형

'computer 지식 > 알고리즘 정복기' 카테고리의 다른 글

2578 빙고 백준 파이썬  (0) 2021.10.13
4396 지뢰찾기 백준 파이썬  (0) 2021.10.13
1244 스위치 켜고 끄기 백준 파이썬  (0) 2021.10.13
백준 1212 파이썬  (0) 2021.10.11
백준 2753번 파이썬  (0) 2021.10.11
반응형
n = int(input())
bulbs = list(map(int,input().split()))
student = []
student_num = int(input())
for i in range(student_num):
  student.append(list(map(int,input().split())))

for order in student:
  if order[0] ==1:
    rest = n//order[1]

    for i in range(1,rest+1):
      bulbs[order[1]*i - 1 ] = (bulbs[order[1]*i - 1 ] * -1) +1
  
  if order[0] ==2:
    limit_of_wing = min(order[1]-1, n-order[1] )
    change_range = limit_of_wing

    for j in range(1, limit_of_wing +1 ):
      if bulbs[order[1]-j-1 ] ==bulbs[order[1]+j-1]:
        pass
      else:
        change_range = j-1
        break

  
    for jj in range(2*change_range +1):
      bulbs[order[1]-change_range +jj-1 ] = (bulbs[order[1]-change_range +jj-1 ] * -1) +1

for bulb_index in range(n):
  if (bulb_index+1) %10 == 0:
    print(bulbs[bulb_index], sep="\n")
  else:
    print(bulbs[bulb_index],end=" ")
반응형

'computer 지식 > 알고리즘 정복기' 카테고리의 다른 글

4396 지뢰찾기 백준 파이썬  (0) 2021.10.13
12933 오리 백준 파이썬  (0) 2021.10.13
백준 1212 파이썬  (0) 2021.10.11
백준 2753번 파이썬  (0) 2021.10.11
백준 상어초등학교 21608 파이썬  (0) 2021.10.11
반응형
n= int(input(),8)

print(bin(n)[2:])
반응형

'computer 지식 > 알고리즘 정복기' 카테고리의 다른 글

12933 오리 백준 파이썬  (0) 2021.10.13
1244 스위치 켜고 끄기 백준 파이썬  (0) 2021.10.13
백준 2753번 파이썬  (0) 2021.10.11
백준 상어초등학교 21608 파이썬  (0) 2021.10.11
백준 2501번  (0) 2021.10.10
반응형
n = int(input())

if n%400 ==0:
    print(1)
elif n%100 ==0:
    print(0)
elif n%4 ==0:
    print(1)
else:
    print(0)
반응형

'computer 지식 > 알고리즘 정복기' 카테고리의 다른 글

1244 스위치 켜고 끄기 백준 파이썬  (0) 2021.10.13
백준 1212 파이썬  (0) 2021.10.11
백준 상어초등학교 21608 파이썬  (0) 2021.10.11
백준 2501번  (0) 2021.10.10
이 카테고리에 관하여  (0) 2021.10.10

+ Recent posts