[백준] 2212 센서 (python 파이썬)
·
🧩 Problem Solving/[백준]
2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net 문제 해석을 잘해야 하는 문제. 아이디어 먼저 문제가 요구하는 것을 이해하는 게 필요하다. 문제에서는 각 집중국의 수신 가능영역의 거리의 합의 최솟값을 구하라고 했다. 이는 아래 예제를 보며 설명해 보면, 이런 식으로 각 센서들을 커버할 수 있는 최소 영역의 크기를 구하면 된다. 그림을 보면 알다시피 문제의 답을 구할 때 센서의 위치는 겹쳐도 상관없다. 문제를 해결하려면, 센서들의 거리가 가장 먼 곳부터 차례대로 지워주면 된다. 예를 들..
[백준] 16918 봄버맨 (python 파이썬)
·
🧩 Problem Solving/[백준]
16918번: 봄버맨첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다.www.acmicpc.net  BFS느낌의 구현 문제아이디어폭탄을 추가하고 터트리는 과정에서 큐를 사용하면 편할 거 같아 deque를 사용했다. 1초마다 어떻게 격자판의 변하는지 생각하며 코드를 작성했다.전체 코드from collections import dequedx = [0, 0, -1, 1]dy = [1, -1, 0, 0]grid = [] # 격자판boomList = deque() # 폭탄 좌표 리스트R, C, N = map(int, input().split())for i in range(R): # 격자판 ..
[백준] 1697 숨바꼭질 (python 파이썬)
·
🧩 Problem Solving/[백준]
1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net BFS를 활용한 최소 시간을 구하는 문제. 아이디어 현재 위치(x)에서 갈 수 있는 거리는 x - 1, x + 1, x * 2이다. 각 경우마다 if문을 통해 조건을 확인해준다. 이전에 방문하지 않은 위치라면 그 위치까지 걸리는 시간들을 BFS방식으로 순회하며 시간을 저장해준다. 전체 코드 from collections import deque N, K = map(int, input().split()) deq = deque() deq.a..
[백준] 15666 N과 M 12 (python 파이썬)
·
🧩 Problem Solving/[백준]
15666번: N과 M (12) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 문제 아이디어 어차피 같은 숫자를 반복해서 사용해도 되므로, 문제에서 제공한 N개의 수에서 중복을 제거해 준다. 백트래킹을 활용해 문제를 해결하면 된다. 전체 코드 N, M = map(int, input().split()) numList = [int(x) for x in input().split()] numList = sorted(list(set(numList))) # 중복 제거후 정렬 n = len(numList) answer = list() seq..
[백준] 14940 쉬운 최단거리 (python 파이썬)
·
🧩 Problem Solving/[백준]
14940번: 쉬운 최단거리 지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은 가로의 크기다.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) 다음 n개의 줄에 m개의 숫자가 주어진다. 0은 갈 수 없는 땅이고 1은 갈 수 있는 땅, 2는 목표지점이 www.acmicpc.net 지도에서 모든 지점의 최단거리를 구하는 문제. 아이디어 BFS를 사용했다. 지도에서 최단거리 == BFS 거의 공식처럼 머리에서 나온다... 문제를 해결하기 위해 목표 지점(2로 표시)과 갈 수 없는 땅(0으로 표시)의 좌표는 따로 저장해 둔다. 전체 코드 from collections import deque dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] start_x, start_y = 0, 0 ..
[백준] 1205 등수 구하기 (python 파이썬)
·
🧩 Problem Solving/[백준]
1205번: 등수 구하기 첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보 www.acmicpc.net 조건의 맞춰 문제를 해결하는 문제. 변수 N, P의 조건이 0
[백준] 21736 헌내기는 친구가 필요해 (python 파이썬)
·
🧩 Problem Solving/[백준]
21736번: 헌내기는 친구가 필요해 2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고 www.acmicpc.net 평범한 그래프 탐색 문제. 아이디어 bfs 또는 dfs를 활용하여 문제를 해결하면 된다. 1. 그래프 시작지역 'I'는 캠퍼스 정보를 받아올 때 미리 찾아둘 수 있다. 2. 빈공간 뿐아니라 사람이 있는 지역 'P'도 이동 가능하다. 3. 정답을 출력할 때, 답이 0명이면 0이 아닌 "TT"를 출력해 주자. 전체 코드 from collections import deque dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] campus =..
[프로그래머스] 42883 큰 수 만들기 (python 파이썬)
·
🧩 Problem Solving/[프로그래머스]
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 개인적으로 좀 어려웠던 문제. 로직을 짜는 사고과정을 더 명확하게 할 필요가 있는 거 같다. 아이디어 기본적으로 큰 수를 만들려면 앞자리가 커야 한다 (8xxx < 9xxx) 그럼 앞자리부터 큰 수를 두려고 생각할 것이다. 앞자리에 큰 수를 어떻게 채울 수 있을까? 문제에서 숫자 한 개를 주고 K개의 수를 제거해서 최대로 만들라고 한다. 탐색 방향은? 앞에서부터 순서대로 탐색한다. 두 수를 비교해 가며 수를 버릴지 말지 결정하면 된다. 예제에 있는 4177252841을 가지고 설명하면, 먼저 4를 리스트에 담..