목록분류 전체보기 (447)
For Programmer
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpLlKAQ4DFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 기존의 BFS와 비슷하나 터널이 연결되어 있는지 연결성을 확인해야 하는 문제이다. 약간의 귀찮은 문제이긴 하나 그렇게 어렵지 않게 해결 할 수 있다. import sys from collections import deque sys.stdin = open('input.txt', 'r') # 각 수마다 방향 처리 def direction(num): if num == 1: return [(-1, 0), ..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LtJYKDzsDFAXc SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 전형적인 BFS문제이다. 단, 첫 번째 출발 번호 방을 찾기위해 나는 큐에 시작점을 계속 담아서 보냈다. 또한 0,0 ~ N -1 , N - 1 으로만 검사하면 아래와 오른쪽으로만 커지는 방향을 정확하게 탐색할 수 있기 때문에 N -1 , N -1 ~ 0, 0 으로 역으로 인덱스를 돌면서 위쪽방향과 왼쪽방향도 정확하게 탐색하도록 하였다. from collections import deque T = ..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15B1cKAKwCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 간단한 bfs 문제이다. 단, 1~100 번까지 어느 번호가 주어질지 모르기 때문에 1번부터100번까지 100크기를 가진 배열을 만들어 놓은 다음 정보가 주어지면 해당 정보를 배열에 추가하는 방식으로 처리했다. 방문처리할때 연락이 되는 순번을 같이 저장함으로써 bfs를 다돌고 난후 가장 마지막 연락되는 사람을 찾는 방식으로 구현하였다. from collections import deque def b..
https://www.acmicpc.net/problem/15662 15662번: 톱니바퀴 (2) 총 8개의 톱니를 가지고 있는 톱니바퀴 T개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net (문제가 너무 길어 링크로 대체합니다.....) 구현문제이나 조금 생각을 많이 해봐야하는 문제입니다. 저는 톱니바퀴끼리의 관계를 True, False로 저장하여 True면 돌 수 없도록 하였고 False면 돌 수 있도록 처리하였습니다. 자세한 설명은 주석으로 달아 놨습니다. # 움직이지 못하는 톱니바퀴 저장 # [1-2] = True, [2-3] = True 와 같은 방식으로 저장 de..
기존의 숫자처리가아닌 알파벳으로 트리를 처리해야하는 문제이다. 딕셔너리와 아스키 코드를 이용하여 문제를 해결하였다. # 전위 순회 def pre_order(v): if v: print(v, end="") pre_order(tree[v][0]) pre_order(tree[v][1]) # 중위 순회 def in_order(v): if v: in_order(tree[v][0]) print(v, end="") in_order(tree[v][1]) # 후위 순회 def post_order(v): if v: post_order(tree[v][0]) post_order(tree[v][1]) print(v, end="") N = int(input()) tree = {} for i in range(65, 65 + N):..
문제를 이해하느라 30분 걸린거 같다. 조금더 설명이 좋았으면 좋겠다. 나머지 구현은 크게 어렵지는 않으나 전개도를 보고 주사위가 만들어졌을 때 각각의 면에 어떤 숫자가 들어가는지 생각하는 것이 생각보다 쉽지 않다;; N, M, r, c, K = map(int, input().split()) maps = [list(map(int, input().split())) for i in range(N)] direct = list(map(int, input().split())) dice = [0, 0, 0, 0, 0, 0] # 주사위의 각면에 써있는 숫자 dr = [-1, 0, 1, 0] # 상 우 하 좌 dc = [0, 1, 0, -1] # 상 우 하 좌 cur_bottom = 5 # 현재 바닥면 for dir ..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV4suNtaXFEDFAUf SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 위 문제 상당히 까다로운 구현이었다. 전형적인 dfs문제이지만 각각의 조건을 처리해주어야 하며 특히, 3번 고려사항: '최대한 많은 Core에 전원을 연결해도, 전원이 연결되지 않는 Core가 존재할 수 있다.' 이 것을 처리하기가 상당히 까다로운 문제였다. 코드에 대해서 주석을 달아 놨다. def remove(depth, dir, error): global connect # 행,열 좌표를 받는다...
https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 문제가 상당히 길어 URL로 남기겠습니다. 위 문제 굉장히 까다로운 구현이었습니다. 사실 어떻게 문제를 해결할지 머릿속에서 구현은 가능했으나 실제로 코드를 옮길려고 하니 생각해야 할 부분들이 너무나도 많았습니다. 특히 cctv가 닿을 수 있는 범위를 # 으로 처리하고 다시 #으로 되어있는 범위를 0으로 바꾸는 식으로 재귀로 구현할 생각했는데 이러한 로직은 문제가 있었습니다. 만약, 다른..