practivceAlgorithm/백준 379

[백준][Python] 11509 풍선맞추기

뭔가 의도한대로 안풀고 이상하게 품.. 강의실 배정마냥 배열의 크기안에서 대응안되면 배열 크기 늘리는 방식으로 풀었는데 솔직히 탐색 연산 효율이 완전 에러라 통과된게 이상.. 아래쪽 보면 존재여부 연산에서 visited배열 사용해서 푸는 느낌으로 푸는게 의도였다고 생각함. 다음부터는 저방법을 꼭 생각해낼 수 있었으면 좋겠다. import sys input = sys.stdin.readline N = int(input()) H = list(map(int,input().split())) arrows = [] for i in range(N): if H[i]+1 in arrows: arrows[arrows.index(H[i]+1)] -=1 else: arrows.append(H[i]) print(len(arro..

[백준][Python] 14891 톱니바퀴

구현문제는 난이도와 수고에 비해 그냥 적용 알고리즘이 접하기 쉽다는 이유로 책정난이도가 너무 낮은 것 같다. BFS로 풀었다. import sys input = sys.stdin.readline from collections import deque from copy import deepcopy def is_rotate(cur_gire,next_gire): if next_gire==cur_gire+1: if check_rotate[cur_gire][2]!=check_rotate[next_gire][6]: return True elif next_gire==cur_gire-1: if check_rotate[next_gire][2]!=check_rotate[cur_gire][6]: return True retu..

[백준][Python] 1074 Z

대표 분할정복이자 재귀문제. 재귀는 3가지가 중요하다. 1. 매개변수(n일때) 2. 최종 계산할 요소(n==0,n==1등 최소 분할 단위) 3. 재귀인자 주입(n-1일때, n+1일때. 각 매개변수의 변동 등.) import sys input = sys.stdin.readline # 핵심은 배열을 4등분하는 분할을 통해 # 배열의 크기가 1인 사각형들의 모임으로 만드는 것. def Z(n,r,c): # 배열의 크기가 1이 되면 0을 정복하여 반환한다. if n==0: return 0 # 배열의 크기를 반을 기준으로 4영역으로 분할한다. harf = 2**(n-1) if r =harf and c

[백준][Python] 3190 뱀

먼가 리팩토링할 수 있을 것 같지만 이하생략.. 평범한 구현문제입니다. import sys input = sys.stdin.readline from collections import deque dx=[0,1,0,-1] dy=[1,0,-1,0] N = int(input()) K = int(input()) snake=deque() board = [[0 for _ in range(N)] for _ in range(N)] for _ in range(K): a,b = map(int,input().split()) board[a-1][b-1]=1 L = int(input()) # 최초 뱀 0,0 방향 오른쪽 snake.append([0,0]) dir=0 board[0][0]=2 t=0 commands=[] for _..

[백준][Python] 14503 로봇청소기

처음 진입시 area[r][c]=2.. ctrl+z누르다 없어져서 한참틀렸다. import sys input =sys.stdin.readline from collections import deque def BFS(r,c,d): queue =deque() queue.append([r,c,d]) cnt=1 # 현재 위치를 청소한다. areas[r][c]=2 while queue: x,y,dir = queue.popleft() for n_dir in ((dir-1)%4,(dir-2)%4,(dir-3)%4,dir): # 현재위치에서 왼쪽부터 차례대로 인접한 칸을 탐색한다. nx=x+dx[n_dir] # 왼쪽에 청소할공간 없다면 다시 회전 ny=y+dy[n_dir] if not areas[nx][ny]: # 청소..

[백준][Python] 20055 컨베이어벨트위의 로봇

절차대로 구현하는 구현문제이다. 이런게 난이도 책정은 낮게되어이쓴데 실제로 좀 그림그리는게 필요해서 체감상 어려웠다 앞으로 구현문제 많이 풀어봐야겟다는 생각을 했다 import sys input = sys.stdin.readline from collections import deque N, K = map(int, input().split()) conveier = deque() conveier.extend(list(map(int, input().split()))) robot = deque() robot.extend([0]*N) K_cnt = conveier.count(0) ans=0 while K_cnt