https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 실버 1 난이도 문제이다. 예전에는 어렵게 풀었을텐데, 이젠 가볍게 풀려서 뿌듯했다..ㅎㅎ 더 높은 난이도도 가볍게 풀리는 날이 오기를,,, 문제 요약 NxN 지역 안에 높이가 저장되어 있고, h만큼의 비가 올 경우 높이가 h이하의 지역들은 물에 잠기게 된다. 이 때 안 잠기는 지역의 개수를 안전영역이라고 하는데, 이 안전영역의 개수의 최댓값 구해야 하는 문제. 해결 전략 - bfs 활용하여 해결했다. ..

해당 문제는 파이썬으로 이미 해결한 코드를 c++로 다시 구현하였다. 파이썬으로 구현한 코드는 아래에서 확인할 수 있다! ㅎㅎ https://thisis-undefined.tistory.com/entry/%EB%B0%B1%EC%A4%80-5397-%ED%82%A4%EB%A1%9C%EA%B1%B0-Python [백준] 5397 키로거 Python 백준의 키로거 문제이다. 해당 문제는 스택으로 구현하였다. left 와 right 라는 2 개의 스택을 만든 뒤 ''일 경우, 오른쪽 원소를 pop하여 left 스 thisis-undefined.tistory.com 👀 주의해야 할 부분 for문에서 i> testcase; while (testcase--) { string str1; cin >> str1; stac..
people = int(input()) a, b = map(int, input().split()) M = int(input()) relation = [[] for _ in range(people+1)] for m in range(M): st, en = map(int, input().split()) relation[st].append(en) relation[en].append(st) result = [] def checkRelation(x): if len(relation[x]) == 0: return result.append(x) # 만약 x가 b라면 끝 if x == b: return True for i in relation[x]: if i in result: continue if checkRelatio..
# 스택을 통해 인덱스로 접근한다. # 먼저 answer 배열도 같이 만들어서 인덱스로 값을 넣는다. # 일단 stack에는 0번 인덱스가 들어가있고, # 바로 다음 인덱스와 비교하여서 큰지 확인한다. # 만약 바로 다음 값이 더 클 경우, 스택에서 더 큰 값이 나올 때 까지 뺀다. # 만약 가리키고 있는 포인터가 배열을 벗어났는데 스택이 비어있지 않으면 # 그 인덱스에 대한 값은 -1로 처리한다. stack = [0] N = int(input()) lst = list(map(int, input().split())) answer = [0] * N pointer = 0 while pointer < len(lst) - 1: if lst[pointer] < lst[pointer + 1]: # 오큰수를 찾음 m..
백준의 키로거 문제이다. 해당 문제는 스택으로 구현하였다. left 와 right 라는 2 개의 스택을 만든 뒤 ''일 경우, 오른쪽 원소를 pop하여 left 스택에 넣었다. '-' 일 경우에는 left 스택에서 원소를 하나 빼주었다. (left 스택의 top 부분이 커서 위치라고 생각하면 된다!) 그 외의 원소들은 left에 추가해준다. 다음은 정답코드이다. import sys def keyLogger(key): pointer = 0 result = "" for k in key: # stack에 값이 있으면서 왼쪽으로 포인터를 이동하는 경우 if result and k == "": if pointer >= len(result): continue pointer += 1 elif len(result) =..

문자열을 순회하다가 폭발 문자열이 발견되면 폭발시키고 뒤에 남은 문자열을 이어붙여준다. 이어붙이면서 폭발 문자열이 또 발생될 경우, 다시 폭발시키고 이어붙여준다. 정말 여러 방법으로 접근했지만, 계속되는 시간초과 문제로 .....😢 구글링을 통해 스택으로 간단하게 풀 수 있다는 것을 알게 되었다. 😂 스택으로 접근한 풀이이다. 일단 문자열을 순회하면서 스택에 넣어준다. 그러다가 폭발 문자열의 끝값과 같은 문자가 발견되면 폭발 문자열 길이 만큼 스택 top부터 가져와서 비교한다. 만약 같은 문자열이면 폭발 문자열만큼 스택에서 pop을 시켜준다. 결국 스택에 남은 문자들을 합한 것이 남아있는 문자열이다. 정답코드 total = list(input()) pang = input() stack = [] for i..
크기가 NxN 인 도시에서 정해진 치킨집 안에서 각각 집까지의 거리의 합 중 최솟값을 구하는 문제이다. 임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|로 구한다. 해당 문제는 완전탐색으로 풀었다. 1. 치킨집들과 집들에 대한 위치를 튜플로 저장한다. chickens = [] house = [] for i in range(N): for j in range(N): if BRD[i][j] == 2: chickens.append((i,j)) elif BRD[i][j] == 1: house.append((i,j)) 2. 조합을 이용해서 각각의 경우의 수를 다 구한다. # M개의 치킨 집을 고르는 경우의 수를 구한다. def combi(n, m): result = []..
- Total
- Today
- Yesterday
- 5397
- 소셜로그인
- SQL
- C++
- cs공부
- cs
- DP
- 다대다매핑
- dfs
- 브루트포스
- allauth
- Network
- 운영체제
- 코딩테스트
- OS
- 프로그래머스
- 코테
- 4계층
- 파이썬
- intellij
- 네트워크
- 백준
- SQLD
- BFS
- 알고리즘
- IPv4
- 완전탐색
- Python
- 인텔리제이
- 동적프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |