본문 바로가기

728x90
반응형

# Coding

(78)
[백준 / 1043] 거짓말 - Python https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 파티 순서는 상관이 없다. 왜냐하면 거짓과 진실을 둘다 들을 수 없기 때문이다. 따라서 전염병 같이 진실을 알고 있는 사람과 만난사람, 그 만난 사람과 만난 사람들 모두 체크해서 해당 사람들이 들어간 파티를 제외하면 거짓말을 할 수 있는 파티가 된다. 따라서 n번 사람이 접촉하는 사람을 딕셔너리 형태로 만든 후, n번이 접촉한 사람 리스트를 queue에 넣어 이를 반복해서 접촉 리스트를 만든다. from c..
[백준 / 1022] 소용돌이 예쁘게 출력하기 - Python https://www.acmicpc.net/problem/1022 1022번: 소용돌이 예쁘게 출력하기 첫째 줄에 네 정수 r1, c1, r2, c2가 주어진다. www.acmicpc.net 모든 소용돌이를 다 그리려 했더니 메모리 초과가 나왔다..(예상했었지만,, 혹시 몰라서,,) 그래서 모든 소용돌이를 그리지만 원하는 부분만 따로 저장하여, 풀었다. r1, c1, r2, c2 = map(int, input().split()) m = max(abs(r1), abs(r2), abs(c1), abs(c2)) answer = [[0 for _ in range(c2-c1+1)] for _ in range(r2-r1+1)] for i in range(m): right_top = (2*(m-i))**2+1-2*(..
[백준 / 1261] 알고스팟 - Python https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 기존의 미로 탐색은 총 거리를 계산했다면, 이번 미로 탐색은 벽을 부순 횟수를 저장하면 된다. BFS로 풀었다. from collections import deque M, N = map(int, input().split()) graph = [] for _ in range(N): graph.append(list(map(int, input()))) temp_graph = [[-1..
[백준 / 1253] 좋다 - Python https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net [풀이] 한 수를 다른 두 수의 합으로 나타내야 한다. 0 2가 있을 때 0+2는 2지만 다른 두 수가 아니므로 해당 경우는 카운트 하지 않고, 0 2 2 가 있을 때는 0+2[idx = 1]와 0+2[idx = 2]이므로 2개가 카운트 된다. [전체 코드] n = int(input()) numList = list(map(int, input().split())) numList.sort() # 중복 수 체크 # 수 개수 -1개..
[백준 / 1997] 최소 스패닝 트리 - Python https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 1. 가중치가 가장 작은 순서로 입력을 정렬한다. 2. 방문 리스트를 작성하되 연결되어 있지 않으면 다른 리스트로 작성한다. ex) 이전에 1,2 노드를 방문했고, 다음에 2,3 노드를 방문하면 방문 리스트에 3을 추가한다. 만약 4,5 노드를 방문하면 새 리스트에 4,5를 입력한다. 만약 다음에 3,4 노드를 방문하면 두 리스트를 합쳐서 1,2,3,..
[백준 / 2206] 벽 부수고 이동하기 - Python https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 벽을 하나 부순 map과 벽을 부수지 않은 map을 이용하였다. from collections import deque n, m = map(int, input().split()) map = [] for _ in range(n): map.append(list(input())) drow = [-1, 0, 1, 0] dcol = [0, 1, 0, -1] map[0][0] = 1 ..
[백준 / 1987] 알파벳 - Python https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 시간을 줄이는 것이 제일 큰 숙제였다. pop, push 작업이 많은 경우 list를 통해 구현하는 것 보다 deque를 이용하는 것이 월등히 빠르다. import sys from collections import deque row, col = map(int, sys.stdin.readline().split()) graph = [] for _ in range(row): graph.appen..
[백준 / 3190] 뱀 - Python https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 뱀의 위치를 리트스에 저장한다. 다음 칸에 가게 된다면 맨 뒤 위치를 지우고, 다음 위치를 저장해서 길이를 유지한다. 만약 사과를 먹게 된다면 맨 뒤 위치를 지우지 않고, 다음 위치를 저장해서 길이를 늘린다. 만약 다음 위치가 벽이나(N을 넘어가거나 0보다 작아지는 경우), 뱀의 몸이라면(다음 위치가 body리스트 안에 있다면) 해당 이동을 멈추고 현재 시간을 출력한다. import sys N = int..

728x90
반응형