본문 바로가기

알고리즘

(158)
파이썬)체스판 위의 공 - BOJ(실패) https://www.acmicpc.net/problem/16957 16957번: 체스판 위의 공 크기가 R×C인 체스판이 있고, 체스판의 각 칸에는 정수가 하나씩 적혀있다. 체스판에 적혀있는 정수는 모두 서로 다르다. 체스판의 각 칸 위에 공을 하나씩 놓는다. 이제 공은 다음과 같은 규칙 www.acmicpc.net import sys input = sys.stdin.readline r, c = map(int, input().split()) arr = [] board = [] for _ in range(r): a = [0] * c board.append(a) arr.append(list(map(int, input().split()))) dx = [0, 0, 1, -1, -1, -1, 1, 1] dy =..
파이선) 개똥벌레 - BOJ https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net n, h = map(int, input().split()) arr = [] top = [] bottom = [] for i in range(n): if i % 2 == 0: bottom.append(int(input())) else: top.append(int(input())) top.sort() bottom.sort() start = 1 end = h cnt = 0 min_v = int('inf')..
파이썬) 2048(Easy) - BOJ https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net from copy import deepcopy n = int(input()) result = 0 arr = [] for _ in range(n): arr.append(list(map(int, input().split()))) def check(board): mm = 0 for i in board: mm = max(max(i), mm) return mm def up(bo..
파이썬) 부등호 - BOJ https://www.acmicpc.net/problem/2529 2529번: 부등호 여러분은 제시된 부등호 관계를 만족하는 k+1 자리의 최대, 최소 정수를 첫째 줄과 둘째 줄에 각각 출력해야 한다. 단 아래 예(1)과 같이 첫 자리가 0인 경우도 정수에 포함되어야 한다. 모든 입력 www.acmicpc.net k = int(input()) arr = [i for i in range(10)] string = list(map(str, input().split())) result = [] def dfs(k, arr, string, current): if len(current) == k + 1: num_str = ''.join(map(str, current)) is_True = True for i in ra..
파이썬)사과 담기 게임 - BOJ https://www.acmicpc.net/problem/2828 n, m = map(int, input().split()) j = int(input()) left = 1 right = m cnt = 0 for _ in range(j): position = int(input()) if left > position: # 사과과 바구니보다 왼쪽에서 떨어지면 cnt += (left - position) # 사과가 바구니 가장 왼쪽에 오게 설정 left = position right = left + m - 1 elif right < position: # 사과가 바구니보다 오른쪽 cnt += position - right right = position left = right - m+1 print(cnt)
파이썬) 폴리오미노 -BOJ https://www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net s = input() s = s.replace('XXXX', '4') s = s.replace('XX', '2') # print(s) #XX와 XXXX를 바꾸면 s라는 문자열에 숫자가 생기는데 그 숫자가 4면 AAAA, 2라면 BB가 들어감 is_ = False for i in s: if i == 'X': #만약 s안에 X가 있다면 그것은 점(.)과 점 사이에 X숫자가 홀수라는 뜻이므로 전부 덮지 못함 print(-1) is_ = True break if is_ == False: s = s.repla..
파이썬) 컵홀더 - BOJ https://www.acmicpc.net/problem/2810 2810번: 컵홀더 첫째 줄에 좌석의 수 N이 주어진다. (1 ≤ N ≤ 50) 둘째 줄에는 좌석의 정보가 주어진다. www.acmicpc.net n = int(input()) s = input() s = s.replace('LL', 'L') new_s = '*' for i in range(len(s)): new_s += s[i] new_s += '*' s = new_s.replace('L', 'LL') # 여기까지 별표를 끼워넣는 과정 arr = [] for i in s: if i == '*': arr.append(False) else: arr.append(i) # arr라는 리스트에 컵홀더는 False로 나머지는 문자 그대로 넣음 cn..
파이썬) 게임을 만든 동준이 - BOJ https://www.acmicpc.net/problem/2847 2847번: 게임을 만든 동준이 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어 www.acmicpc.net n = int(input()) arr = [] for i in range(n): arr.append(int(input())) cnt = 0 for i in range(n-1, 0, -1): if arr[i]