본문 바로가기

분류 전체보기443

[Clean Code] 클린코드 이론 정리 1. 클린 코드(Clean Code)란 ? "Clean code does one thing well.” 클린 코드는 하나의 일을 잘 하는 코드이다. - Bjarne Stroustrup, inventor of ‘C++ “Clean code is simple and direct." 클린 코드는 간결하며, 직접적이다. - Grady Booch, author of ‘Object-Oriented Analysis and Design with Applications’ 저명한 개발자들이 정의한 클린코드란 단순하여 읽기 쉽고, 각 역할마다 주어진 하나의 일만 담당하며, 복잡하거나 모호하지 않은 코드입니다. 즉, 원하는 로직을 빠르게 찾을 수 있는 코드, 모든 팀원이 이해하기 쉽도록 작성된 '가독성'이 좋은 코드 입니다... 2023. 11. 20.
[SWEA - D4] 보급로 # 정답 코드(BFS + 최단경로) from collections import deque T = int(input()) for test_case in range(1, T + 1): n = int(input()) dx = [-1,1,0,0] dy = [0,0,-1,1] area = [list(map(int,(list(input())))) for _ in range(n)] visited = [[False]*n for _ in range(n)] time = [[0]*n for _ in range(n)] def bfs(): visited[0][0] = True queue = deque([(0,0)]) while queue: x, y = queue.popleft() for i in range(4): nx = x .. 2023. 11. 19.
[프로그래머스 PCCP 모의고사 2-4번] 수레 def solution(maze): answer = 0 n = len(maze) m = len(maze[0]) dx = [-1,1,0,0] dy = [0,0,-1,1] minimum = float("inf") is_success = False # 모든 수레가 각각의 도착 칸에 이동해야 함 # 각 턴 마다 모든 수레를 상하좌우로 인접한 칸 중에 하나로 이동 # 벽(5)이나 격자 판 밖으로 이동 X # 자신이 방문했던 칸으로 이동 X # 도착 칸에 위치한 수레는 더 이상 이동 X # 동시에 두 수레를 같은 칸에 위치 X # 수레끼리 자리를 바꿀 수 X for i in range(n): for j in range(m): if maze[i][j] == 1: red_start = (i,j) if maze[i][j.. 2023. 11. 18.
[프로그래머스 PCCP 모의고사 2-2번] 시추관 from collections import deque def solution(land): answer = 0 dx = [-1,1,0,0] dy = [0,0,-1,1] n = len(land) m = len(land[0]) visited = [[False]*m for _ in range(n)] total = [0]*m def bfs(x,y): if visited[x][y]: return visited[x][y] = True y_list = set() count = 0 queue = deque([(x,y)]) while queue: temp_x,temp_y = queue.popleft() count += 1 y_list.add(temp_y) for i in range(4): nx = temp_x + dx[i.. 2023. 11. 18.
[프로그래머스 PCCP 모의고사 2-1번] 붕대 감기 def solution(bandage, health, attacks): # 1초마다 x 만큼 체력회복 # t초 동안 연속으로 붕대를 감는데 성공하면 y만큼의 체력을 추가로 회복 # 최대 체력 보다 체력이 커지는건 X # 몬스터에게 공격을 당하거나 기술이 끝나면 '붕대 감기' 재시전 + 연속 성공시간 0초기화 # 체력이 0 이하가 되면 캐릭터 사망 후 회복 X # 만약에 공격받고 죽으면 -1 리턴 # 입력 : 붕대감기 기술정보(시전 시간, 1초당 회복량, 추가 회복량), 최대 체력, 몬스터의 공격 패턴 # 출력 : 모든 공격을 받고 난 후 남은 체력 max_time = attacks[-1][0] # 몬스터의 마지막 공격시간 attack_list = [0]*(max_time+1) # 공격 목록을 리스트화 f.. 2023. 11. 18.
[프로그래머스 PCCP 모의고사 4번] 보물 지도 from collections import deque def solution(n, m, hole): dx = [-1,1,0,0] dy = [0,0,-1,1] area = [[0]*n for _ in range(m)] visited = [[[-1]*n for _ in range(m)] for _ in range(2)] for hx, hy in hole: area[hy-1][hx-1] = -1 area[0][0],area[m-1][n-1] = 1, 2 def bfs(): visited[0][0][0] = 0 queue = deque([(0,0,0)]) while queue: w, x, y = queue.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] .. 2023. 11. 11.