본문 바로가기

CodingTest

(238)
[ BOJ / 파이썬 ] 2447 별 찍기 | 제출 코드 | import sys input = sys.stdin.readline n = int(input()) stars = [[" "]*n for _ in range(n)] def draw_block(k, x, y): if k == 1: stars[x][y] = '*' return for i in range(3): for j in range(3): if i == 1 and j == 1: continue draw_block(k//3, x+(k//3)*i, y+(k//3)*j) draw_block(n, 0, 0) for s in stars: print(''.join(s)) 뭐 정답 처리는 되긴 했다. 그런데 백퍼센트 내 힘으로 푼게 아니라서 찝찝하다. 대신 설명을 자세히 남겨야겠다. 일단 내가 문제가..
[ BOJ / 파이썬 ] 17478 재귀 함수가 뭔가요? 재귀함수에 대해서 간단하게 이해해보기 좋은 문제였다. 재귀함수 시작 전 메시지, 시작 후 반복되는 메시지, 재귀 끝날 타이밍 마주쳤을 때 메시지, 재귀 끝내고 돌아가며 반복해 남기는 메시지가 나뉘기 때문이었다. 사실 재귀 문제는 저 4타이밍에서 어떤 동작을 할 지 짜주면 되는 게 다인데, 가끔 어려운 문제에서 구조적인게 아리까리하면 그 내용도 헷갈리기 때문에 저런 시점을 정확하게 파악하는 것이 중요하다. / 제출 1 / import sys input = sys.stdin.readline n = int(input()) def recur(i,n): for k in range(i): print('____', end="") print("\"재귀함수가 뭔가요?\"\n") if i == n: for k in ran..
[ BOJ / 파이썬 ] 1600 말이 되고픈 원숭이 보호되어 있는 글입니다.
[ BOJ / 파이썬 ] 2146 다리 만들기 / 제출 1 / (소요 시간: 1시간) import sys input = sys.stdin.readline from collections import deque from copy import deepcopy n = int(input()) dx = [-1, 0, 1, 0] dy = [0, -1, 0, 1] board = [list(map(int, input().split())) for _ in range(n)] teamMin = {} def getCandidateBridge(): teamNum = 10000 + 1 q = deque([]) candidate = [] for i in range(n): for j in range(n): if board[i][j] == 1: q.append((i, j)) boa..
[ BOJ / 파이썬 ] 2573 빙산 / 제출 1 / : 35분 소요 import sys input = sys.stdin.readline from collections import deque n, m = map(int, input().split()) dx = [-1, 0, 1, 0] dy = [0, -1, 0, 1] board = [list(map(int, input().split())) for _ in range(n)] cnt = 0 def getIceBergNum(): visited = [[False] * m for _ in range(n)] result = 0 for i in range(n): for j in range(m): if board[i][j] != 0 and visited[i][j] == False: q = deque([])..
[ BOJ / 파이썬 ] 9466 텀 프로젝트 cycle문제는 정말 간만이다. 문제 이해 포인트는 마지막에 DFS 순간이 정의되는 것을 찾는건데, 그 순간은 나(x)의 타겟이 cycle안에 존재해서 걔부터 시작해서 그 뒤에 얼마나 이어졌건간에 하여간 다 팀으로 인정하고 끝내는 것. 개인적으로는 내 타겟이 방문 안 된 상태일 때 어떤 액션을 취해줘야할 지 결정을 못 내려서 문제를 해결해내지 못 했었다. 같은 과정을 타겟에게 넘겨서 진행하며 반복하면 되는 것이었다. 언젠가 방문처리된 값에 도달할 수 있는데, 이 시점에서! 팀구성 가능한지를 체크하면 되는 것이다. 나는 이걸 반대로 하려고 해서 스스로 로직이 더 꼬였었다. 다시 정리하면. DFS에서는 아래와 같은 순서로 진행된다. 1) 나(x) 방문 처리 2) 내 타겟(내가 팀 하고 싶은 학생 설정) 3)..
[ BOJ / 파이썬 ] 2206 벽 부수고 이동하기 / 제출 1 / ( 소요 시간 : 30분 ) import sys input = sys.stdin.readline from collections import deque dx = [1, 0, -1, 0] dy = [0, 1, 0, -1] n, m = map(int, input().split()) board = [] walls = [] for i in range(n): line = list(map(int, input().strip())) for j in range(m): if line[j] == 1: walls.append((i, j)) board.append(line) result = [] for wall in walls: i, j = wall board[i][j] = 0 q = deque([(0, 0)])..
[ BOJ / 파이썬 ] 2574 불 / 23분 경과 시점 첫 풀이 / ( + No제출 + 기록용 ) import sys input = sys.stdin.readline from collections import deque dx = [1, 0, -1, 0] dy = [0, 1, 0, -1] tc = int(input()) for _ in range(tc): q = deque([]) fire = deque([]) w, h = map(int, input().split()) board = [] for i in range(h): line = list(input()) for j in range(w): if line[j] == '@': line[j] = 0 q.append((i, j)) if line[j] == '*': fire.append((i, j..
[ BOJ / 파이썬 ] 7562 나이트의 이동 / 제출 1 / # 22.08.17 24분간 풀어본 망한 풀이(무한 재귀) import sys input = sys.stdin.readline from collections import deque # 8가지 dx = [-2, -1, 1, 2, -1, -1, 1, 2] dy = [1, 2, 2, 1, -1, -2, -2, -1] tc = int(input()) for i in range(tc): l = int(input()) board = [[0] * l for _ in range(l)] currentX, currentY = map(int, input().split()) targetX, targetY = map(int, input().split()) q = deque([(currentX, currentY)..
[ BOJ / 파이썬 ] 7569 토마토 보호되어 있는 글입니다.