본문 바로가기

문제 풀이262

[Python] 백준 1987번 : 알파벳 https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 문제 풀이 DFS 문제이다. 재귀적으로 DFS를 구현하는데 재귀를 끝내고 나오면 이전에 포함시킨 알파벳을 지움으로 약간 백트래킹과 같은 모습을 가지게 된다. 2차원 배열로 여러 가지 경우가 생길 수 있으므로 최댓값 global 변수로 지정해 계속 최신화해준다. 느낀 점 시간 초과로 한번 수정, 또 수정 계속 수정하다가 어이가 없어서 다른 분의 코드를 보고 아스키코드로 접근해서 풀어보려고 했.. 2022. 7. 14.
[Python] 백준 10026번 : 적록색약 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 문제 풀이 BFS 문제이다. 이런 류의 문제는 항상 고민해야 하는 것이 BFS/DFS를 돌려서 어떻게 결과를 낼 것인지 이다. 우선 색약이 있는 사람과 없는 사람을 따로 구분해서 2차원 배열을 구현해줬다. 2차원 배열을 돌면서 방문하지 않은 곳을 기준으로 더 이상 이동할 수 없을 때 하나의 구역으로 인지한다. 느낀 점 DFS 문제를 풀어보려고 골랐는데 또 BFS 였다. 어떻게 탐색을 해서 .. 2022. 7. 14.
[Python] 백준 1260번 : DFS와 BFS https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 풀이 DFS와 BFS 문제이다. DFS와 BFS의 개념을 잡기 위한 문제인 것 같다. DFS와 BFS를 구현해주면 된다. 느낀 점 오랜만에 BFS, DFS를 풀어서 느낌을 다시 잡으려고 선택한 문제이다. 내가 기억하는 개념을 그대로 구현하려고 했는데 DFS가 좀 이상하다.. 웨지?..감자..? deque 라이브러리를 사용하지 않고 구현하려고 했고, 딕셔너.. 2022. 7. 12.
[Python] 백준 5052번 : 전화번호 목록 https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 문제 풀이 문자열 문제이다. 문자열 정렬의 특징을 잘 활용하면 된다. 숫자는 정렬하면 크기대로 정렬이 되지만 문자열은 사전 순으로 정렬된다!! 예를 들어서 [123, 12, 1245]는 12, 123, 1245 순으로 정렬되지만, ['235', '12', '1245']는 '12', '1245', '235' 순으로 정렬된다! 따라서 앞뒤로 비교만하면 쉽게 확인할 수 있다. 느.. 2022. 7. 11.
[Python] 백준 17413번 : 단어 뒤집기 2 https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 문제 풀이 문자열 문제이다. flag를 사용해서 True 상태라면 그대로 입력받고 아니라면 스택에 추가한다. 가 등장하면 False로 바꿔준다. 스택에 있는 단어를 넣어주는 경우는 2가지로, 2022. 7. 11.
[Python] 백준 9935번 : 문자열 폭발 https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 문제 풀이 문자열 문제이다. 스택을 사용해서 어떤 문자를 넣었을 때 폭발이 일어나는지 여부를 확인하면 된다. 느낀 점 코드 import sys S = sys.stdin.readline().strip() Boom = sys.stdin.readline().strip() stack = [] for ch in S: stack.append(ch) if ''.join(stack[-len(Boo.. 2022. 7. 11.