https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 실버 1 난이도 문제이다. 예전에는 어렵게 풀었을텐데, 이젠 가볍게 풀려서 뿌듯했다..ㅎㅎ 더 높은 난이도도 가볍게 풀리는 날이 오기를,,, 문제 요약 NxN 지역 안에 높이가 저장되어 있고, h만큼의 비가 올 경우 높이가 h이하의 지역들은 물에 잠기게 된다. 이 때 안 잠기는 지역의 개수를 안전영역이라고 하는데, 이 안전영역의 개수의 최댓값 구해야 하는 문제. 해결 전략 - bfs 활용하여 해결했다. ..
파이썬에서 모든 조합을 구하기 위해서 제공하는 라이브러리가 있다. product, permutations, combinations 각각의 용도와 사용 방법에 대해서 알아보자. [1] 사용법 먼저, 해당 라이브러리를 사용하기 위해 다음 문장을 추가해주자. from itertools import combinations from itertools import permutations from itertools import product [2] 사용 예시 permutations, combinations - 하나의 리스트로부터 조합을 구할 때 - 순열 lst = ['a', 'b', 'c', 'd', 'e'] print(list(permutations(lst, 2))) # [('a', 'b'), ('a', 'c'),..
데이터 개수 셀 때 사용할 수 있는 counter 에 대해서 알아보자. counter는 collections 모듈로부터 import하여 사용한다. [1] 사용 방법 먼저, counter 라이브러리를 사용하기 위해서는 맨 위에 다음 문장을 추가한다. from collections import Counter [2] 사용 예시 만약, 한 문장 안에 단어별로 개수를 센다고 가정해보자. sentence = "helloworld" sentence_dict = {} for s in sentence: if s in sentence_dict.keys(): sentence_dict[s] += 1 else: sentence_dict[s] = 1 # {'h': 1, 'e': 1, 'l': 3, 'o': 2, 'w': 1, '..
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) =..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cd2tcU/btrfbZMYQ6B/fCaKp3fiwz1v0YO6pJ6Z2K/img.png)
문자열을 순회하다가 폭발 문자열이 발견되면 폭발시키고 뒤에 남은 문자열을 이어붙여준다. 이어붙이면서 폭발 문자열이 또 발생될 경우, 다시 폭발시키고 이어붙여준다. 정말 여러 방법으로 접근했지만, 계속되는 시간초과 문제로 .....😢 구글링을 통해 스택으로 간단하게 풀 수 있다는 것을 알게 되었다. 😂 스택으로 접근한 풀이이다. 일단 문자열을 순회하면서 스택에 넣어준다. 그러다가 폭발 문자열의 끝값과 같은 문자가 발견되면 폭발 문자열 길이 만큼 스택 top부터 가져와서 비교한다. 만약 같은 문자열이면 폭발 문자열만큼 스택에서 pop을 시켜준다. 결국 스택에 남은 문자들을 합한 것이 남아있는 문자열이다. 정답코드 total = list(input()) pang = input() stack = [] for i..
- Total
- Today
- Yesterday
- 다대다매핑
- 브루트포스
- Python
- 코딩테스트
- BFS
- 네트워크
- cs
- C++
- IPv4
- 인텔리제이
- 동적프로그래밍
- 백준
- 알고리즘
- 소셜로그인
- dfs
- OS
- 4계층
- 코테
- SQLD
- 5397
- 프로그래머스
- SQL
- 완전탐색
- DP
- intellij
- Network
- 파이썬
- cs공부
- 운영체제
- allauth
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |