algorithm/Implementation 7

[백준20061/골드2] 모노미노도미노 2 - Python

https://www.acmicpc.net/problem/20061 처음에 문제 이해가 안돼서 한참 다시 읽었다. ✅ 문제 조건 1. 빨간색 보드에 블록을 놓으면, 초록색 보드와 파란색 보드로 블록 이동 1-1. 초록색 보드- 열 고정된 상태로 아래방향으로 블록 떨어짐- 가로 줄이 모두 차면 제거, 위에 있는 블록은 아래로 이동- 0, 1번 행 중 블록이 있으면, 가장 아래 행부터 차례로 한 줄씩 삭제, 비원진 만큼 위에서 밀어내림 1-2. 파란색 보드- 행 고정된 상태로 오른쪽방향으로 블록 떨어짐- 세로 줄이 모두 차면 제거, 왼쪽에 있는 블록은 오른쪽으로 이동- 0, 1번 열 중 블록이 있으면, 가장 오른쪽 열부터 차례로 한 줄씩 삭제, 비워진 만큼 왼쪽에서 밀어내림 2. 주어진 사이클만큼 블록 ..

[백준17822/골드2] 원판 돌리기 - Python

https://www.acmicpc.net/problem/17822 매 T 마다 반복되는 동작은1. 원판 회전2-1. 인접한 값 중 서로 같은 값이 있으면 그 값들 삭제2-2. 인접하면서 같은 수가 없는 경우에는 원판 수의 합보다 작은 수는 += 1, 큰 수는 -= 1 그래서 세가지 함수를 만들었다.  1. 원판 회전def turn(x, d, k): # x의 배수인 원판을 d(0: 시계, 1: 반시계) 방향으로 k칸 회전 for i in range(x, N+1, x): if d == 0: # 시계 방향 circles[i-1] = circles[i-1][-k:] + circles[i-1][:-k] else: # 반시계 방향 circ..

[백준17143/골드1] 낚시왕 - Python

https://www.acmicpc.net/problem/17143 매 초마다 기억해야할 것1. 위치별 상어가 몇마리 들어있는지 (가장 큰 상어가 잡아먹기위해)2. 각 상어의 속도, 방향, 크기 그래서 낚시터 배열 mp 와 상어의 속도, 방향, 크기를 저장할 sharks 딕셔너리를 만들었다. 상어 정보 저장mp = [[[] for _ in range(C)] for _ in range(R)]sharks = {}direction = [(-1, 0), (1, 0), (0, 1), (0, -1)] # 위, 아래, 오른쪽, 왼쪽for i in range(M): r, c, s, d, z = map(int, input().split()) # 위치, 속력, 이동방향, 크기 heappush(mp[r-1][..

[백준15685/골드3] 드래곤 커브 - Python

https://www.acmicpc.net/problem/15685  드래곤 커브를 어떻게 구현할지 많이 고민했다.그래서1. 현재까지의 드래곤 커브 좌표 리스트를 좌표이동하여 붙이는 방법2. 현재까지의 드래곤 커브 방향을 회전하여 이어붙이는 방법두가지로 할 수 있지 않을까 생각했다. 1번으로 하면 좌표 연산량이 많아지고 매번 좌표 튜플을 저장해야해서 메모리 사용량이 증가할 것 같았다.그래서 2번으로 구현 시작했다. 먼저 네 좌표로 정사각형이 되는지 확인하는 함수를 만들었다. mp = [[False] * 101 for _ in range(101)]# 정사각형 체크def check(i, j): if mp[i][j] and mp[i+1][j] and mp[i][j+1] and mp[i+1][j+1]: ..

[백준2422/실버4] 한윤정이 이탈리아에서 아이스크림을 사먹는데 - Python

https://www.acmicpc.net/problem/2422 처음엔 그냥 모든 세가지 조합을 구한 후 웩인 조합이 들어갔는지 확인해줬다.  # 실패 코드N, M = map(int, input().split())arr = [list(map(int, input().split())) for _ in range(M)]result = 0def dfs(i, start, select): global result if i == 3: if can_eat(select): result += 1 return for j in range(start, N + 1): if j not in select: dfs(i + 1, j + 1, ..

[백준17825/골드2] 주사위 윷놀이 - Python

2의 배수로 40까지 이루어진 맵을 만들고 특정 칸 (10, 20, 30) 위에 올라가면 다른 맵으로 이동시켜서 구현하려고 했다. # 실패 코드 from copy import deepcopy# 말 개수 : 4개# 주사휘 눈의 수 : 1, 2, 3, 4, 5# 주사위 던져서 아무 말이나 이동# 이동 후 그 자리에 말이 있을 경우는 이동 불가능 (41번째 칸일경우는 가능)# 저장할 정보 : 주사위 번호, 말 번호, 현재 칸 수, 이동 방향, 현재 점수result = 0turn = list(map(int, input().split()))# 10, 20, 30일때의 맵dice = { 10: [13, 16, 19, 25, 30, 35, 40], 20: [22, 24, 25, 30, 35, 40], ..

문자열 메서드

1. zfill문자열을 0으로 채워서 지정한 길이로 만든다print(str(9).zfill(3)) # 출력: 009  2. rjust문자열을 오른쪽 정렬하고, 왼쪽에 지정한 문자를 채운다# 오른쪽 정렬, 기본적으로 공백으로 채움print("5".rjust(3)) # 출력: " 5"# 왼쪽에 특정 문자로 채움print("ABC".rjust(5, 'X')) # 출력: XXABC 3. ljust문자열을 왼쪽 정렬하고, 오른쪽에 지정한 문자를 채운다  문자열 꿀팁~